特判的疑惑
查看原帖
特判的疑惑
654958
Light_az楼主2023/5/4 17:59

不是保证了出队列操作一定有 cc 个数吗,为什么需要特判 id<=t

#include<bits/stdc++.h>
#define ll long long
#define F(i,j,n) for(int i=j;i<=n;i++)
#define Tr(v,e) for(int v:e)
#define D double
#define ps push_back
#define Test ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
const int N=1e6+10,NN=1e4+10;
ll n,m,k,x,y,u,v,w,cnt=0,ans=0,t=0,l=1,r,id=1,len,T,num;
ll mini=INT_MAX,maxi=0,p=998244353;
string s1,s2;
ll opt;
struct Node{
	ll sum,x;
}a[N];
int main(){
	cin>>n;
	F(i,1,n){
		cin>>opt;
		if(opt==1){
			t++;
			cin>>a[t].x>>a[t].sum;
		}
		else{
			ans=0;
			cin>>cnt;
			while(cnt>=a[id].sum&&id<=t){//特判
				cnt-=a[id].sum;
				ans+=a[id].sum*a[id].x;
				id++;
			}
			ans+=cnt*a[id].x;
			a[id].sum-=cnt;
			cout<<ans<<"\n";
		}
	} 

	return 0;
}

2023/5/4 17:59
加载中...