0
已解决
#include<bits/stdc++.h>
using namespace std;
struct node{
int p,d;
bool operator<(const node &y)const{
if(p!=y.p)return p<y.p;
if(d!=y.d)return d<y.d;
}
};
priority_queue<node> q;
int n,P,D,ans=-1,cnt;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>P>>D;
q.push(node{P,D});
}for(int i=1;!q.empty();i++){
if(i%2==0){//偶数位,不管
ans=max(ans,q.top().p);
//cout<<"oushu\n";
q.pop();
}else{ //奇数位,踢开
node tmp=q.top();
//cout<<"jishu: "<<tmp.d<<' '<<tmp.p<<endl;;
tmp.p+=tmp.d;
ans=max(ans,tmp.p+tmp.d);
q.pop();
q.push(tmp);
}
}cout<<ans;
return 0;
}
//WA0
//请大佬指错,谢谢!