Gym - 101102C
生活随笔
收集整理的這篇文章主要介紹了
Gym - 101102C
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
#include <bits/stdc++.h> using namespace std; const int maxn=1e5+5; int data[maxn],last[maxn],ans; struct D {int id;int sc;int time;D(int id0=0,int sc0=0,int time0=0){id=id0;sc=sc0;time=time0;} }; bool operator < (D a,D b) {if(a.sc!=b.sc) return a.sc<b.sc;if(a.id!=b.id) return a.id>b.id;return a.time<b.time; } int main() {int t,n,q,x,p;scanf("%d",&t);while(t--){priority_queue<D> que;int ansid=0,anssum=0,ans=0;scanf("%d%d",&n,&q);for(int i=1;i<=n;i++) que.push(D(i,0,0));//printf("%d\n",que.top().id);memset(data,0,sizeof(data));memset(last,0,sizeof(last));ans=1;int ansT=0;for(int i=1;i<=q;i++){scanf("%d%d",&x,&p);data[x]+=p;last[x]=i;while(!que.empty() && que.top().time != last[que.top().id]) que.pop();if(x==ans&&p<0) {//printf("%d %d---\n",ans,que.top().id);//D tmp = que.top();//que.pop();while(!que.empty() && que.top().time != last[que.top().id]) que.pop();//printf("%d %d---\n",ans,que.top().id);if(!que.empty()&&(data[ans]<que.top().sc||(data[ans]==que.top().sc && que.top().id<ans))) {ansT = i;ans = que.top().id;}//que.push(tmp); }else if(p>=0&&x!=ans&&(data[x]>data[ans]||(data[x]==data[ans]&&x<ans))) {ans = x;ansT = i;}que.push(D(x,data[x],i));}printf("%d\n",ansT);}return 0; }?
轉載于:https://www.cnblogs.com/Ritchie/p/6209350.html
總結
以上是生活随笔為你收集整理的Gym - 101102C的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.Jenkins 在windows下的
- 下一篇: [转]Delphi中QuotedStr介