Решил в качестве хобби в последнее время убить двух зайцев, поизучать с++ и порешать интересные задачки, нашел сайт с онлайнтестером и начал решать. На одной из задач (достаточно простой по моему мнению), мне упорно заявляют Wrong answer Где и в чем моя ошибка я понять не могу, подозреваю, что в силу недостаточного знания английского, не точно понял формат ввода/вывода данных или часть условия, хотя все кажется ясным.
Задание (на английском языке) находится тут: http://acm.uva.es/p/v4/488.html
Еще одно описание с тестовыми данными тут: http://www.algorithmist.com/index.php/UVa_488
Онлайн судья тут: http://uva.onlinejudge.org/
мой код тут:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int tests, freq, ampl;
string blank, result_str;
string get_wave( int a )
{
string wave;
vector<string> lines;
for (int i = 0; i < a; i++ )
{
string line;
char c = (char)(49 + i);
for ( int j = 0; j <= i; j++ )
{
line.push_back©;
}
lines.push_back(line);
}
for (int i = 0; i < 2 * a - 1; i++)
{
int idx = i < a ? i : (2*a - i - 2);
wave.append(lines[idx]);
wave.append("\n");
}
return wave;
}
int main()
{
cin >> tests; // читаем кол-во тестов
getline( cin, blank ); // читаем пустую строку
while ( --tests >= 0 )
{
cin >> ampl; // по каждому тесту читаем 2 подрят идущих строки с амплитудой и частотой
cin >> freq;
// далее никаких пустых строк не читаем, получаеим и сохраняем результат для данного теста и переходим к чтению следующих 2-х строк (если это не последний тест)
string wave = get_wave( ampl );
for (int i = 0; i < freq; ++i )
{
result_str.append( wave );
if (!( i == freq - 1 && tests == 0))
{
result_str.append("\n");
}
else
{
result_str.erase(result_str.length() - 1);
}
}
}
cout << result_str;
return 0;
}
Сообщение отредактировано: klem4 -