Plataforma: URI
Problema: 1235
Enunciado:
A sua impressora foi infectada por um vírus e está imprimindo de forma incorreta. Depois de olhar para várias páginas impressas por um tempo, você percebe que ele está imprimindo cada linha de dentro para fora. Em outras palavras, a metade esquerda de cada linha está sendo impressa a partir do meio da página até a margem esquerda. Do mesmo modo, a metade direita de cada linha está sendo impressa à partir da margem direita e prosseguindo em direção ao centro da página.
Por exemplo a linha:
THIS LINE IS GIBBERISH
está sendo impressa como:
I ENIL SIHTHSIREBBIG S
Da mesma forma, a linha " MANGOS " está sendo impressa incorretamente como "NAM SOG". Sua tarefa é desembaralhar (decifrar) a string a partir da forma como ela foi impressa para a sua forma original. Você pode assumir que cada linha conterá um número par de caracteres.
Linguagem: C++
Solução:
Basicamente é necessário obter a metade da string "linha" e imprimir desde a metade (posição metade-1) até o início (posição 0) e depois da posição linha.size()-1 até a posição "metade".
#include <iostream> using namespace std; int main() { string linha; int testes; cin >> testes; cin.ignore(); while (testes--) { getline(cin, linha); int metade = linha.size() % 2 + linha.size() / 2; for (int i = metade-1; i >= 0; i--) cout << linha[i]; for (int i = linha.size()-1; i >= metade; i--) cout << linha[i]; cout << endl; } return 0; }