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

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

Hey guys,I was doing the problem A. Who Is The Winner? http://mirror.codeforces.com/gym/100712/attachments/download/3454/acm-amman-collegiate-programming-contest-en.pdf My solution is working in my computer but is showing Runtime error upon submission

include <bits/stdc++.h>

using namespace std;
    bool comp(const pair<int,int> &a,const pair<int,int> &b)
    {
        if(a.first>b.first)
            return a.first>b.first;
        else if(a.first<b.first)
            return a.first<b.first;
            else
            {
                return a.second<b.second;
            }
    }
    map<pair<int,int>,string>m;

    int main()
    {


       int n,t;
       cin>>t;
       while(t--)
       {
           int a,b;
           cin>>n;
           pair<int,int>p[100];string s;
           for(int i=0;i<n;++i)
           {
               cin>>s;
               cin>>a>>b;
               p[i].first=a;p[i].second=b;
               m[p[i]]=s;
           }
           sort(p,p+n,comp);
           cout<<m[p[0]]<<"\n";m.clear();


       }


             return 0;


    }

Can someone help me??

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

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

comp looks incorrect it is equivalent to

bool comp(const pair<int,int> &a,const pair<int,int> &b)
{
    if(a.first>b.first)
        return true; //return a.first>b.first;
    else if(a.first<b.first)
        return true; // return a.first<b.first;
    else
    {
         return a.second<b.second;
    }
}

which is the same as

bool comp(const pair<int,int> &a,const pair<int,int> &b)
{
    if(a.first != b.first)
        return true;
    else
    {
         return a.second<b.second;
    }
}

That means for your comparator (1,x) < (2,y) and (2,x) < (1,y) is true at the same time. Some else posted about the problem few days ago.

You can insert code, by clicking the button to the left of CF icon.