Я хочу знать, почему мой ответ неправильный, а другой код правильный.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Я хочу знать, почему мой ответ неправильный, а другой код правильный.

Сообщение Anonymous »

Тест на способность к программированию (PAT) организован Колледжем компьютерных наук и технологий Чжэцзянского университета. Предполагается, что каждый тест будет проводиться одновременно в нескольких местах, а рейтинговые списки будут объединены сразу после теста. Теперь ваша задача — написать программу, которая правильно объединит все списки рангов и сгенерирует окончательный рейтинг.
Входная спецификация:
Каждый входной файл содержит один тестовый пример. Для каждого случая первая строка содержит положительное число N (≤100) — количество тестовых локаций. Затем следуют N рейтинговых списков, каждый из которых начинается со строки, содержащей целое положительное число K (≤300), количество испытуемых, а затем K строк, содержащих регистрационный номер (13-значное число) и общий балл каждого испытуемого. Все числа в строке разделяются пробелом.
Спецификация вывода:
Для каждого тестового примера сначала выведите в одну строку общее число испытуемых. Затем распечатайте окончательный рейтинг в следующем формате:

Код: Выделить всё

registration_number final_rank location_number local_rank
Местоположения пронумерованы от 1 до N. Выходные данные должны быть отсортированы в порядке неубывания конечных рангов. Испытуемые с одинаковым количеством баллов должны иметь одинаковый ранг, а выходные данные должны быть отсортированы в порядке неубывания их регистрационных номеров.
Пример входных данных:

Код: Выделить всё

2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
Пример вывода:

Код: Выделить всё

9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4
это мое:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
struct Student
{
char id[14];
int score;
int r;
int location = -1;
int rl;
};
bool cmp(Student a, Student b)
{
if (a.score != b.score)
return a.score > b.score;
else
return strcmp(a.id, b.id) < 0;
}
int main()
{
using namespace std;
int locations = 0;
int number = 0;
int n = 0;
char registration_number[14];
vector sumstudents;

freopen("input.txt", "r", stdin);

fscanf(stdin, "%d", &locations);  //fscanf返回值需检查
for (int i = 1; i  13)
{
cerr rl = 1;
// int flag = 1;
// while (it != students.end())
// {
//     flag++;
//     auto pre = it;
//     it = std::find_if(++it, students.end(), [&](const Student &s)
//                       { return s.location == i; });
//     if (it->score == pre->score)
//         it->rl = pre->rl;
//     else
//         it->rl = flag;
// }
}
std::sort(sumstudents.begin(), sumstudents.end(), cmp);
sumstudents[0].r = 1;
for (size_t i = 1; i < sumstudents.size(); i++)
{
if (sumstudents[i].score == sumstudents[i - 1].score)
sumstudents[i].r = sumstudents[i - 1].r;
else
sumstudents[i].r = i + 1;
}
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78368958/i-want-to-know-why-my-answer-is-wrong-and-the-other-code-is-correct[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»