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

map assigment of read only data member или WTF? - C++

Восстановить пароль Регистрация
 
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 12:44     map assigment of read only data member или WTF? #1
задача:из acm.timus.ru
1100. Таблица результатов
Ограничение времени: 1.0 секунды
Ограничение памяти: 16 МБ
Старое программное обеспечение для проведения соревнований использует пузырьковую сортировку для создания таблицы результатов. Однако сейчас команд слишком много, и программное обеспечение работает слишком медленно. Вас попросили написать программу, которая создаёт такую же таблицу результатов, как и старое программное обеспечение, но быстро.
Исходные данные
Первая строка входных данных содержит только целое число 1 < N ≤ 150 000 — количество команд. Каждая из следующих N строк содержит два целых числа: 1 ≤ ID ≤ 107 и 0 ≤ M ≤ 100. ID — уникальный номер команды, а M — количество решённых этой командой задач.
Результат
Вывод должен содержать N строк с двумя целыми числами ID и M в каждой. Строки должны быть отсортированы в порядке убывания M с помощью пузырьковой сортировки (или аналога).


вот что я настрокала с использованием map
Кликните здесь для просмотра всего текста
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
#include<iostream.h>
#include<map.h>
using namespace std;
int main()
{
    long comands;
    cin>>comands;
    map<int,int>table;
    map<int,int>::iterator curr;
    map<int,int>::iterator tmp;
    int i=0;
    for(;i<comands;i++)
    {
                       int key,value;
                       cin>>key>>value;
                       table[key]=value;
    }
    for(curr=table.begin();curr!=table.end();curr++)
       for(tmp=(++curr);tmp!=table.end();tmp++)
          {
             if( (*tmp).second>(*curr).second)
             {
                 int tmpf,tmps;
                 tmpf=(*tmp).first;
                 tmps=(*tmp).second;
                 (*tmp).first=(*curr).first;
                 (*tmp).second=(*curr).second;
                 (*curr).first=tmpf;
                 (*curr).second=tmps;
             }
          }
    for(curr=table.begin();curr!=table.end();curr++)
       cout<<(*curr).first<<" "<<(*curr).second;
 system("pause");
 return 0;   
}

выдает ошибку в этом месте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 for(curr=table.begin();curr!=table.end();curr++)
       for(tmp=(++curr);tmp!=table.end();tmp++)
          {
             if( (*tmp).second>(*curr).second)
             {
                 int tmpf,tmps;
                 tmpf=(*tmp).first;
                 tmps=(*tmp).second;
                 (*tmp).first=(*curr).first;
                 (*tmp).second=(*curr).second;
                 (*curr).first=tmpf;
                 (*curr).second=tmps;
             }
          }
это я так пузырьковую сортировку реализовала))))
вот что пишет дословно
Миниатюры
map assigment of read only data member или WTF?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.06.2013, 12:48     map assigment of read only data member или WTF? #2
лилиэн, Нельзя менять ключ в мапе, без удаления и новой вставки.
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 13:24  [ТС]     map assigment of read only data member или WTF? #3
Цитата Сообщение от ForEveR Посмотреть сообщение
лилиэн, Нельзя менять ключ в мапе, без удаления и новой вставки.
если не сложно можете пример ...как поменять местами 2 записи в map
даже допустим 1ю и последнюю
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.06.2013, 13:38     map assigment of read only data member или WTF? #4
лилиэн, Никак. map упорядоченный контейнер.
Поменять можно нестандартным путем, используя const_cast-ы и в итоге разбалансировать дерево, на котором построен map.
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
03.06.2013, 14:02  [ТС]     map assigment of read only data member или WTF? #5
Цитата Сообщение от ForEveR Посмотреть сообщение
лилиэн, Никак. map упорядоченный контейнер.
Поменять можно нестандартным путем, используя const_cast-ы и в итоге разбалансировать дерево, на котором построен map.
тоесть тогда эту задачу так не решить что ли.... а есть какие то варианты как?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.06.2013, 14:12     map assigment of read only data member или WTF? #6
лилиэн, map УЖЕ отсортирован (но в этом случае резоннее использовать multimap). просто задать компаратор. ну или использовать не мап.
Yandex
Объявления
03.06.2013, 14:12     map assigment of read only data member или WTF?
Ответ Создать тему
Опции темы

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