Untitled
unknown
plain_text
a year ago
2.4 kB
11
Indexable
#include <bits/stdc++.h>
using namespace std ;
#define ll long long
#define For(n) for(long long i = 0; i < n; i++)
#define endl '\n'
#define int long long
struct node {
int id;
int score;
};
class cmp{
public :
bool operator() (node n1,node n2){
if(n1.score<n2.score)return 1;
else if(n1.score>n2.score)return 0;
else return n1.id>n2.id;
}
};
void solve(){
map<int,int> mp;
int n,q,x,y;;cin>>n>>q;
std:: priority_queue<node ,std::vector<node>,cmp>prevscores;
cin>>x>>y;mp[x]+=y;
int ans=0,mxscore = y,winnerteam=x;
for(int i=1;i<q;i++){
cin>>x>>y;
mp[x]+= y;
if(x==winnerteam && mp[x]<mxscore){// if winner team got fuckedup
mxscore = mp[x];// update mxscore
if(prevscores.empty())continue;
if(mxscore<prevscores.top().score){
ans = i;
mxscore = prevscores.top().score;
winnerteam = prevscores.top().id;
prevscores.pop();
}
else if(mxscore==prevscores.top().score){
if(x>prevscores.top().id){
ans = i;
mxscore = prevscores.top().score;
winnerteam = prevscores.top().id;
prevscores.pop();
}
}
}
else if(mp[x]>mxscore){
if(winnerteam!=x)ans = i;
node n; n.id=x,n.score=mxscore;
prevscores.push(n);
winnerteam = x;
mxscore = mp[x];
}
else if(mp[x] == mxscore){
if(x<winnerteam){
ans = i;
winnerteam = x;
}
else {
node n;n.id=x,n.score=mxscore;
prevscores.push(n);
}
}
else {
node n;n.id=x,n.score=mxscore;
prevscores.push(n);
}
// cout << winnerteam<<' '<<mxscore<<' '<<' '<<prevscores.top().first<<' '<<prevscores.top().second<<endl;
}
if(ans)ans++;
// if(ans == n) ans --;
cout << ans << endl;
}
signed main ()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t =1;
cin>>t;
while (t--){
solve();
}
}Editor is loading...
Leave a Comment