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

Как сделать, чтобы программа быстрее работала? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
NeRRouZ
 Аватар для NeRRouZ
4 / 4 / 0
Регистрация: 19.12.2010
Сообщений: 54
03.05.2011, 16:26     Как сделать, чтобы программа быстрее работала? #1
Задача такая
Первая строка содержит количество банкнот N (1 ≤ N ≤ 500 000). В следующих N строках даны достоинства K этих банкнот (0 ≤ K ≤ 10^9). Более половины из этих значений одинаковы.
Результат
Выведите наиболее часто встречающееся достоинство банкнот.

как сделать так, чтобы программа работала быстрее??


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
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
    
    long int n;
    long int k;
    vector<long int>v;
   
    //freopen ("input.txt","r",stdin);
    cin>>n;
    
    for (long int i=0; i<n; i++)
    {
        cin>>k;
        v.push_back(k);
        
    }
      if (n == 1)
         cout<<v[0]<<endl;
        else
        
    { 
      
   sort(v.begin(), v.end());
    
long int max = 0, mmax = 0, nmax = v[0];
   for(long int i = 0; i < n; i++)
   {
      if(mmax > max)
      {
         nmax = v[i-1];
         max = mmax;
      }
 
      mmax = 0;
     for(long int j = i; j < n; j++){
         if(v[i] == v[j])
            mmax++;
            }
   }
 
   cout<<nmax<<endl;
}
 
 
   // system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2011, 16:26     Как сделать, чтобы программа быстрее работала?
Посмотрите здесь:

Чтобы программа работала через КЛАСС. Дата некоторого дня характеризуется натуральными числами: m(порядковый номер месяца) и n(число) C++
C++ Дана формула. необходимо чтобы программа работала и выводила значение
C++ как сделать цикл, чтобы после моего действия, которое делает программа, она предлагала мне сделать его еще раз?
Код чтобы программа работала на Windows и Mac OS C++
C++ подскажите как сделать чтобы программа работала и выводила информацию о рейсах которыми можно воспользоваться для прибытия в пункт назначения раньше з
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
03.05.2011, 18:17     Как сделать, чтобы программа быстрее работала? #2
использовать map вместо vector
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<map>
#include<algorithm>
#include<utility>
 
int main(){
    long k;
    std::map<long, long> mapInt;
    while (std::cin>>k){
        ++mapInt[k];
    }
    std::cout<<(std::max_element(mapInt.begin(), mapInt.end(), [](std::pair<long, long> a, std::pair<long, long> b){return a.second<b.second;})->first);
    return 0;
 
}
NeRRouZ
 Аватар для NeRRouZ
4 / 4 / 0
Регистрация: 19.12.2010
Сообщений: 54
04.05.2011, 21:57  [ТС]     Как сделать, чтобы программа быстрее работала? #3
объясните пожалуйста вот этот кусок кода
C++
1
[](pair<long, long> a, pair<long, long> b)
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
04.05.2011, 22:12     Как сделать, чтобы программа быстрее работала? #4
это лямбда функтор, для старых компиляторов можно заменить указателем на ф-цию.
Yandex
Объявления
04.05.2011, 22:12     Как сделать, чтобы программа быстрее работала?
Ответ Создать тему
Опции темы

Текущее время: 11:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru