Блог пользователя vats0726

Автор vats0726, история, 7 лет назад, По-английски

Hello Friends, I am getting a runtime-Error on my submission to problem 230-A(http://mirror.codeforces.com/contest/230/submission/39135638) Plzzz help me out.

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Hi,

I think there is some problem with erasing the iterator while iterating through the map..

The output of this code shows that the value of m.end() is not updated in the first for loop.

for(int i=0;i<n;i++)
{   int s,b;
    cin>>s>>b;
    m[s]=b;

}

int cnt=0; 
map<int,int>::iterator it,it2;
for(it=m.begin();it!=m.end();it++)
{   
    cout<<"it 1 "<<it->first<<" "<<it->second<<endl;

    for(it2=m.begin();it2!=m.end();it2++)
    {
        cout<<"it 2 "<<it2->first<<" "<<it2->second<<endl;
        if(it2->first<s)
        {   cnt++;
            s+=it2->second;
            m.erase(it2);
            break;
        }
    }
}

Input : 999 2

1010 10

67 89

Output: it 1 67 89

it 2 67 89

it 1 1330860869 1162633042

it 2 1010 10

also, I think m[s]+=b was what you were looking for :)