| 比赛 |
收心赛 |
评测结果 |
WTTTTTTTTT |
| 题目名称 |
冰火战士 |
最终得分 |
0 |
| 用户昵称 |
ChenBp |
运行时间 |
27.940 s |
| 代码语言 |
C++ |
内存使用 |
26.29 MiB |
| 提交时间 |
2026-02-24 12:01:47 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <utility>
using namespace std;
typedef pair<int,int> pii;
const int N=2e6+6;
pii a[2][N];
int q,n[2]={0,0};
struct o{
int t;
pii x;
}s[N];
void del(o x){
int i=1;
for(;i<=n[x.t];i++){
if(a[x.t][i]==x.x) break;
}
for(;i<=n[x.t]-1;i++){
a[x.t][i]=a[x.t][i+1];
}
n[x.t]--;
}
int sl(int x){
int i=1;
int j=n[1];
while(i<=n[0]){
if(a[0][i].first>x) i++;
else break;
}
if(i>n[0]) return -1;
//cout<<"!i";
while(j>=1){
if(a[1][j].first<x) j--;
else break;
}
if(j<=0) return -1;
//cout<<"!j";
int ni=a[0][i].second,nj=a[1][j].second;
//cout<<"!"<<i<<" "<<j<<" "<<ni<<" "<<nj<<endl;
int ans=0;
while(i<=n[0]&&j>=1){
// cout<<"#"<<i<<" "<<j<<endl;
int c=min(ni,nj);
ans+=2*c;
ni-=c;
nj-=c;
if(ni==0){
i++;
ni=a[0][i].second;
}
if(nj==0){
j--;
nj=a[1][j].second;
}
// cout<<"@"<<ans<<endl;
}
return ans;
}
void solve(){
if(n[0]==0||n[1]==0){
cout<<"Peace\n";
return;
}
int id=-1,mx=0;
//cout<<"@"<<a[0][1].first<<" "<<a[1][n[1]].first<<endl;
for(int i=a[0][1].first;i<=a[1][n[1]].first;i++){
int now=sl(i);
//cout<<"!"<<i<<" "<<now<<endl;
if(now>=mx){
mx=now;
id=i;
}
}
cout<<id<<" "<<mx<<endl;
}
int main(){
freopen("icefire.in","r",stdin);
freopen("icefire.out","w",stdout);
cin>>q;
for(int _=1;_<=q;_++){
int op;
cin>>op;
if(op==1){
int t,x,y;
cin>>t>>x>>y;
s[_]={t,make_pair(x,y)};
if(x>a[t][n[t]].first){
a[t][++n[t]]=make_pair(x,y);
}else{
int i=1;
for(;i<=n[t];i++){
if(x<a[t][i].first){
break;
}
}
int ii=i;
for(;i<=n[t];i++){
a[t][i+1]=a[t][i];
}
a[t][ii]=make_pair(x,y);
n[t]++;
}
}else{
int k;
cin>>k;
del(s[k]);
}
//cout<<"$"<<n[0]<<" "<<n[1]<<endl;
solve();
}
}