С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
16 / 12 / 3
Регистрация: 06.03.2014
Сообщений: 71
1

Задача на Timus Online Judge, C++. Решена, но

07.03.2014, 19:44. Показов 5839. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решил задачу, но выдает ошибку WA на 2 тесте. Не могу даже представить, в чем дело. Задача:

1100. Таблица результатов
Ограничение времени: 1.0 секунды
Ограничение памяти: 16 МБ
Старое программное обеспечение для проведения соревнований использует пузырьковую сортировку для создания таблицы результатов. Однако сейчас команд слишком много, и программное обеспечение работает слишком медленно. Вас попросили написать программу, которая создаёт такую же таблицу результатов, как и старое программное обеспечение, но быстро.
Исходные данные
Первая строка входных данных содержит только целое число 1 < N ≤ 150 000 — количество команд. Каждая из следующих N строк содержит два целых числа: 1 ≤ ID ≤ 10^7 и 0 ≤ M ≤ 100. ID — уникальный номер команды, а M — количество решённых этой командой задач.
Результат
Вывод должен содержать N строк с двумя целыми числами ID и M в каждой. Строки должны идти по убыванию M в порядке, полученном с помощью пузырьковой сортировки. http://acm.timus.ru/problem.aspx?space=1&num=1100

Моё решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
 
using namespace std;
 
class Team {
public:
    int id;
    int tasks;
};
 
void sort(Team* t,int m,int n) {
    Team tmp;
    int k,l;
    k=m; l=n;
    int p=(k+l)/2;
    do {
        while(t[k].tasks<t[p].tasks) k++;
        while(t[l].tasks>t[p].tasks) l--;
        if(k<=l) {
            tmp=t[k];
            t[k]=t[l];
            t[l]=tmp;
            k++;
            l--;
        }
    } while(k<l);
    if(m<l) sort(t,m,l);
    if(k<n) sort(t,k,n);
}
 
int main()
{
    int n=0;
    cin>>n;
    Team* teams = new Team[n];
    for(int i=0;i<n;i++) {
        cin>>teams[i].id;
        cin>>teams[i].tasks;
    }
    sort(teams,0,n-1);
    while(n--) cout<<teams[n].id<<" "<<teams[n].tasks<<endl;
    return 0;
}
В Visual Studio 2012 всё вроде работает, в чем может быть проблема?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2014, 19:44
Ответы с готовыми решениями:

Простенькая задачка из Timus Online Judge(1005. Куча камней)
Собственно условие: http://acm.timus.ru/problem.aspx?space=1&amp;num=1005 Моё решение: #include...

Подгонка решения задачи под тесты Timus Online Judge, С++
На Timus Online Judge столкнулся с довольно простой задачей, с которой у меня возникли некоторые...

Задача на Timus Online Judge
Вот решил порешать задачи для практики на Python на сайте Timus Online Judge дошел до вот этой...

Задача с Timus Online Judge (1025)
Начал решать простую задачу: http://acm.timus.ru/problem.aspx?space=1&amp;num=1025, пишет Wrong answer....

4
Заблокирован
07.03.2014, 19:47 2
Контрпример:
2
4 0
3 2
0
16 / 12 / 3
Регистрация: 06.03.2014
Сообщений: 71
07.03.2014, 19:57  [ТС] 3
3 2
4 0

Всё верно же.
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
07.03.2014, 20:08 4
Лучший ответ Сообщение было отмечено Logumanov как решение

Решение

Logumanov, неохота вникать в ваше решение, но я вроде вижу быструю сортировку. так? если да, то ясно почему WA: пузырек обладает свойством устойчивости, а быстрая сортировка нет. меняйте сортировку
1
16 / 12 / 3
Регистрация: 06.03.2014
Сообщений: 71
07.03.2014, 20:13  [ТС] 5
ya_noob, спасибо, хорошо помогли!
0
07.03.2014, 20:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2014, 20:13
Помогаю со студенческими работами здесь

На Timus Online Judge выдает wrong answer
На Timus Online Judge выдает wrong answer 10, перебрал уже кучу примеров и везде ответ сходится, на...

Clojure LeetCode Online Judge: Maximum Gap
Дан список положительных целых чисел. Найти максимальную разницу между последовательными элементами...

Clojure LeetCode Online Judge: Largest Number
Дан список положительных целых чисел. Организовать их так, чтобы они образовали наибольшее число....

LeetCode Online Judge: Maximum Product Subarray
Дан числовой список. Найти непрерывную последовательность, произведение элементов которой яляется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru