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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчитать, сколько различных букв в одном слове. http://www.cyberforum.ru/cpp-beginners/thread803823.html
#include<iostream.h> #include<string.h> #include<conio.h> #include<stdio.h> #include<ctype.h> char r,a,txt; int q,f,k,i,l,n,b; int main() { clrscr();
C++ Из string выделить часть строки В string записаны название города и область. Как из нее взять только название города (до первых символов " (") А сама строка может быть такой: Верхняя Санарка (Челябинская область) Верх-Нейвинский (Свердловская область) http://www.cyberforum.ru/cpp-beginners/thread803822.html
Вывод n знаков после запятой C++
Как это сделать?
определить кол-во букв в тексте C++
задан текст. определить сколько в нем разных букв.
C++ Стек и указатели http://www.cyberforum.ru/cpp-beginners/thread803800.html
Есть элемент стека описанный в структуре: struct ElementOfStack { char info; // здесь, как я поняла, находится информация о значении предыдущего элемента ElenentOfStack* prev; // здесь хранится указатель на предыдущий элемент. }; Здесь более менее все понятно.
C++ Указатель на список в элементе списка Есть реализация списка с помощью структуры описывающей указатель на список, и структуры одного элемента списка. Нужно что бы в элементе списка был указатель на другой список. Но проблема в объявлении типов. Как можно реализовать такое? //Узел списка typedef struct list { struct list *previous; char val; list_exm* more; struct list *next; } node; подробнее

Показать сообщение отдельно
HardLogin
 Аватар для HardLogin
52 / 52 / 1
Регистрация: 20.01.2013
Сообщений: 640
Записей в блоге: 1
09.03.2013, 13:12     Задача Таблица результатов
Старое программное обеспечение для проведения соревнований использует пузырьковую сортировку для создания таблицы результатов. Однако сейчас команд слишком много, и программное обеспечение работает слишком медленно. Вас попросили написать программу, которая создаёт такую же таблицу результатов, как и старое программное обеспечение, но быстро.
Исходные данные
Первая строка входных данных содержит только целое число 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;
}
Выдает что много времени. Как ускорить прогу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru