| 比赛 |
收心赛 |
评测结果 |
WWWWWWTTTT |
| 题目名称 |
冰火战士 |
最终得分 |
0 |
| 用户昵称 |
郑霁桓 |
运行时间 |
13.360 s |
| 代码语言 |
C++ |
内存使用 |
41.25 MiB |
| 提交时间 |
2026-02-24 11:25:47 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,op[2000005],t[2000005],x[2000005],y[2000005];
int b[2000005],bb,l1[8000005],l2[8000005];
int m1[8000005],m2[8000005],ps[8000005];
pair<int,int>pp;
inline void pd(int p){
m1[p*2]+=l1[p];
m1[p*2+1]+=l1[p];
m2[p*2]+=l2[p];
m2[p*2+1]+=l2[p];
l1[p*2]+=l1[p];
l1[p*2+1]+=l1[p];
l2[p*2]+=l2[p];
l2[p*2+1]+=l2[p];
l1[p]=l2[p]=0;
return;
}
inline void ad(int x,int y,int l,int r,int p,int v,int pp){
if(x<=l&&r<=y){
if(pp){
l1[p]+=v;
m1[p]+=v;
}else{
l2[p]+=v;
m2[p]+=v;
}
if(!ps[p]) ps[p]=r;
return;
}
int md=(l+r)>>1;
if(l1[p]||l2[p]) pd(p);
if(x<=md) ad(x,y,l,md,p*2,v,pp);
if(md+1<=y) ad(x,y,md+1,r,p*2+1,v,pp);
if(!ps[p*2]) ps[p*2]=md;
if(!ps[p*2+1]) ps[p*2+1]=r;
if(min(m1[p*2],m2[p*2])>min(m1[p*2+1],m2[p*2+1])){
m1[p]=m1[p*2];
m2[p]=m2[p*2];
ps[p]=ps[p*2];
}else if(min(m1[p*2],m2[p*2])==min(m1[p*2+1],m2[p*2+1])){
if(max(m1[p*2],m2[p*2])>max(m1[p*2+1],m2[p*2+1])){
m1[p]=m1[p*2];
m2[p]=m2[p*2];
ps[p]=ps[p*2];
}else{
m1[p]=m1[p*2+1];
m2[p]=m2[p*2+1];
ps[p]=ps[p*2+1];
}
}else{
m1[p]=m1[p*2+1];
m2[p]=m2[p*2+1];
ps[p]=ps[p*2+1];
}
return;
}
inline pair<int,int> fd(int l,int r,int p){
if(l==r){
return {l,min(m1[p],m2[p])*2};
}
if(!ps[p]) ps[p]=r;
int md=(l+r)>>1,s=min(m1[p],m2[p])*2;
pd(p);
pair<int,int>ppp;
if(min(m1[p*2],m2[p*2])>min(m1[p*2+1],m2[p*2+1])) ppp=fd(l,md,p*2);
else ppp=fd(md+1,r,p*2+1);
if(ppp.second<=s){
ppp.first=max(ppp.first,ps[p]);
ppp.second=s;
}
return ppp;
}
int main(){
freopen("icefire.in","r",stdin);
freopen("icefire.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>op[i]>>t[i];
if(op[i]==1){
cin>>x[i]>>y[i];
b[++bb]=x[i];
}
}
sort(b+1,b+bb+1);
bb=unique(b+1,b+bb+1)-b-1;
for(int i=1;i<=n;i++){
if(op[i]==1){
x[i]=lower_bound(b+1,b+bb+1,x[i])-b;
if(t[i]) ad(1,x[i],1,bb,1,y[i],1);
else ad(x[i],bb,1,bb,1,y[i],0);
}else{
if(t[t[i]]) ad(1,x[t[i]],1,bb,1,-y[t[i]],1);
else ad(x[t[i]],bb,1,bb,1,-y[t[i]],0);
}
pp=fd(1,bb,1);
if(!pp.second) cout<<"Peace\n";
else cout<<b[pp.first]<<" "<<pp.second<<"\n";
}
return 0;
}