Городская олимпиада по программированию

Это конец.

Если первый день я считаю приемлемым, 200 баллов из 200 в первых двух задачах и 28 из 200 в последних двух, это нормально, потому что на решение последних двух я уделил место только частным случаям, то то, что произошло сегодня, не укладывается в моей голове.

Окей, 100 баллов за первую, её бы даже Денис решил. За вторую 2 балла. Потому что я ленивый идиот и не догадался проверить случаи неравенства количества блюд и сотрудников, а тестов, удовлетворявших моему решению, было всего 1 из 50.

За третью 22 балла, ничего не имею против, с геометрией я не слишком дружу.

За четвертую 25 баллов, тут я не знаю, что сыграло большую роль — моя жадность при выделении памяти или особенности компилятора.

Итак, мы имеем 3 строки по 50 символов в каждой, каждая записывается с новой строки.

Оказывается, компилятор считает, что код

for(i=0;i<n;i++)
{
fscanf(fin,"%s\n",&a[i].s);
printf("%i\n",strlen(a[i].s));
}
for(i=0;i<n;i++)
{
printf("%i\n",strlen(a[i].s));
}

 

таков, что в первом случае стоит выводить 50 50 50, а во втором — 150 100 50, потому что объявленный тип

typedef struct stroka
{
    char s[50];
} stroka;

нужно было объявлять как

typedef struct stroka
{
    char s[51];
} stroka;

дабы избежать проблем при переносе строки. Я пожадничал и не выделил лишний символ, полагая, что компилятор считывает только строку без символов переноса, а в условии сказано, что их длина не превышает 50. Правда, почему следующие строки записывались в предыдущее значение счётчика, пока что для меня загадка.

Из-за того, что в файле две строки оказались одинаковыми, а в файле было 100 строк, правильными оказались 98 ответов из 100, а это значит, что тест неправильный и -5 баллов.

Итого, недобор в 103 балла, и 377 вместо 480 из 800, и как следствие, прощание с надеждой стать хотя бы призёром, необязательно попадая на всерос.

У Коли пока что 537, и подозрительный недобор 5 баллов в 3 задаче 1-го тура, итого 542. У Вити 380, что тоже неплохо.

Ну а я кусок идиота. Блять. Ненавижу себя.

Добавить комментарий