求昨天T2正解,蒟蒻超时60分
  • 板块学术版
  • 楼主AndyPomeloMarsGotoHE
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/1/15 08:09
  • 上次更新2023/10/24 04:11:26
查看原帖
求昨天T2正解,蒟蒻超时60分
820210
AndyPomeloMarsGotoHE楼主2023/1/15 08:09

rt,代码如下:

#include <iostream>
#define ll long long
using namespace std;

ll N,M,Seq[3000010];

inline ll read(){
	ll f=1,k=0;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') f=-1; 
		c=getchar(); 
	}
	while(c>='0'&&c<='9'){
		k=(k<<1)+(k<<3)+(c^48);
		c=getchar();
	}
	return f*k;
}

inline void write(ll x){
    if(x<0) putchar('-'),x=-x;
    if(x>9) write(x/10);
    putchar(x%10+'0');
}

inline ll del(ll x){
    sort(Seq,Seq+N);
    ll flag = -1;
    for (ll i=1;i<=N;++i){
        if (Seq[i]==x){
            for (ll j=i;j<=N;++j){
                Seq[j] = Seq[j+1];
            }
            flag = 1;
            break;
        }
    }
    if (flag!=-1) --N;
    return flag;
}

inline ll solve(){
    sort(Seq,Seq+N);
    ll ANS = 0;
    for (ll i=1;i<=N;++i){
        if (i==N) ANS += abs(Seq[1] - Seq[i]);
        else ANS += abs(Seq[i+1] - Seq[i]);
    }
    return ANS;
}

int main(){
    N = read();
    M = read();
    for (ll i=1;i<=N;++i) Seq[i] = read();
    while (M--){
        ll op,x;
        op = read();
        x = read();
        if (op==1){
            ll flag = del(x);
            if (flag==-1) write(-1);
            else write(solve());
            cout << "\n";
        }
        else{
            Seq[++N] = x;
            write(solve());
            cout << "\n";
        }
    }
}
2023/1/15 08:09
加载中...