Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 750
Записей в блоге: 1
#1

Задача Таблица результатов - C++

09.03.2013, 13:12. Просмотров 390. Ответов 2
Метки нет (Все метки)

Старое программное обеспечение для проведения соревнований использует пузырьковую сортировку для создания таблицы результатов. Однако сейчас команд слишком много, и программное обеспечение работает слишком медленно. Вас попросили написать программу, которая создаёт такую же таблицу результатов, как и старое программное обеспечение, но быстро.
Исходные данные
Первая строка входных данных содержит только целое число 1 < N ≤ 150 000 — количество команд. Каждая из следующих N строк содержит два целых числа: 1 ≤ ID ≤ 107 и 0 ≤ M ≤ 100. ID — уникальный номер команды, а M — количество решённых этой командой задач.
Результат
Вывод должен содержать N строк с двумя целыми числами ID и M в каждой. Строки должны быть отсортированы в порядке убывания M с помощью пузырьковой сортировки (или аналога).

Решить то её просто но нужно уложится во время 1 сек.
вот мой код:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <iomanip>
using namespace std;
 
struct M
{
       int iD;
       int a;
};
 
void SortM( M massiv[] , long size , char sim )
{
     M insert;
     long moveItem;
     if( sim == '>' )
     {
      for( int next = 0; next < size; next++ )
      {
          insert = massiv[ next ];
          moveItem = next;
          
          while( ( moveItem > 0 )&&( massiv[ moveItem - 1 ].a > insert.a ) )
          {
                 massiv[ moveItem ] = massiv[ moveItem - 1 ];
                 moveItem--;
          }
          massiv[ moveItem ] = insert;
      }
     }
     else
     {
         for( int next = 0; next < size; next++ )
         {
          insert = massiv[ next ];
          moveItem = next;
          
          while( ( moveItem > 0 )&&( massiv[ moveItem - 1 ].a < insert.a ) )
          {
                 massiv[ moveItem ] = massiv[ moveItem - 1 ];
                 moveItem--;
          }
          massiv[ moveItem ] = insert;
         }
     }
}
 
 
int main()
{
    int n;
    
    cin >> n;
    
    M *m = new M[ n ];
    for( int i = 0; i < n; i++ )
    cin >> m[ i ].iD >> m[ i ].a;
    
    SortM( m, n, '<' );
    
    for( int i = 0; i < n; i++ )
    {
         cout << m[ i ].iD << " " << m[ i ].a << '\n';
    }
    
    return 0;
}
Выдает что много времени. Как ускорить прогу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2013, 13:12     Задача Таблица результатов
Посмотрите здесь:

Сохранить таблица результатов игры в файл - C++
Сделал маленькую игрушку в c++. Там имеется меню, и есть папка 'Результаты'. Во время игры туда должна записываться переменная, типа ходы,...

Задача Таблица. За одно обращение к каждому элементу массива необходимо каждый элемент заменить ближайшим большим следующим за ним - C++
Не могу решить задачу( В массиве А размера n за одно обращение к каждому элементу массива необходимо каждый элемент заменить ближайшим ...

Вывод результатов - C++
Помогите пожалуйста сделать вывод более красивее: #include &lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL,...

Анализ результатов - C++
Добрый вечер форумчане. Кто-нибудь сталкивался с описанием программы на С. Я вот тут застрял: Оценка стиля программирования + таблица; ...

Визуализация результатов моделирования - C++
Добрый вечер! Собственно говоря, вот в чем дело: занимаюсь я моделированием различных физических процессов, но скажем сейчас мне...

нужен скрин результатов - C++
здравствуйте! помогите, пожалуйста, что-то произошло с компом не один компилятор не запускается. не могли бы вы вот эту программу...

Вывод результатов с форматированием - C++
Добрый день. Простая задача с решением квадратного уравнения, проблема в том, что корни выводятся не в нужном мне формате, мне нужно, чтобы...

Тестирование, вывод результатов - C++
Доброго времени суток! у меня такой вопрос есть тест в котором нужно выбирать один из двух вариантов ответов либо А либо Б ...

Анализ спортивных результатов - C++
Не подскажите в чем ошибка? Задача: В массиве хранится информация о результатах 22 спортсменов, участвовавших в соревнованиях по бегу...

Занесение в файл результатов - C++
Народ! Нужна помощь...В общем есть программка в С++, условие следующее...&quot;Создать класс, содержащий некоторые данные. В классе должны быть...

Разница результатов float и double - C++
Объясните, пожалуйста, почему результаты для float и double отличаются? int main() { float a = 1000, b = 0.0001, c = pow(a - b,...

получение двух результатов из функции - C++
нужно сделать ф-цию, которая будет возвращать периметр и площадь прямоугольника процедура на паскале выглядит так: Procedure RectPS(x1,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1463 / 677 / 88
Регистрация: 03.06.2009
Сообщений: 3,548
Завершенные тесты: 1
10.03.2013, 16:10     Задача Таблица результатов #2
http://ru.wikipedia.org/wiki/%D0%91%...B2%D0%BA%D0%B0
HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 750
Записей в блоге: 1
10.03.2013, 16:36  [ТС]     Задача Таблица результатов #3
прост мне кажется что в условии говорят чтобы я пузырком отсортировал. Я правильно пузырьком зделал?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru