0.02秒!能不能有dalao看看下一步怎么优化
查看原帖
0.02秒!能不能有dalao看看下一步怎么优化
979656
Sgt_Dante楼主2023/8/28 20:56
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define pii pair<int,int>
#define x first
#define y second
ll c,q,top=0,di=0,ans_p=-1;
ll mm=-1;
vector<pii> sb;
bool is_change=1;
int main(){
    cin>>c>>q;
    while(q--){
    	int op;
    	scanf("%d",&op);
    	if(op==1){
    		ll now_x;
    		scanf("%lld",&now_x);
    		pii now_n;
    		now_n.x=now_n.y=now_x;
    		sb.push_back(now_n);
    		di++;
    		is_change=1;
    		mm=max(mm,now_x);
    	}
    	else if(op==2){
    		ll now_x;
    		scanf("%lld",&now_x);
    		while(sb[top].x<=now_x){
    			now_x-=sb[top].x;
    			top++;
    		}
    		sb[top].x-=now_x;
    		is_change=1;
    		
    	}
    	else if(op==3){
    		ll now_x;
    		scanf("%lld",&now_x);
    		ll i=top,j=0;
    		while(j+sb[i].x<now_x){
    			j+=sb[i].x;
    			i++;
    		}
    		printf("%lld\n",now_x-j+sb[i].y-sb[i].x);
    	}
    	else{
    		if(is_change&&ans_p<top){
    			ll i=top;
    			mm=-1;
    			while(i<di){
    				if(sb[i].y*1ll>=mm){
    					mm=sb[i].y*1ll;
    					ans_p=i;
    				}
    				i++;
    			}
    			is_change=0;
    		}
    		printf("%lld\n",mm);
    	}
    }
}

无比憋屈的优化失败了

2023/8/28 20:56
加载中...