比赛 收心赛 评测结果 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();
    }
}