测试样例都能过,其他全 0。
#include<bits/stdc++.h>
using namespace std;
#define int long long
map <int,int> m;
map <int,int> mm;
int in(){
int ans=0;
char a=getchar();
while(a>'9'||a<'0') a=getchar();
while(a<='9'&&a>='0'){
ans = ans*10 + a - '0';
a=getchar();
}
return ans;
}
signed main(){
int q = in();
int cnt = 0;
while(q--){
int opt=in(),x,y;
if(opt==1||opt==2||opt==4) x=in();
if(opt==1||opt==2) y=in();
if(opt==1) {
if(mm[x]<cnt){
mm[x]++;
if(m[x]>0) m[x]=1;
}
m[x]+=y;
}
else if(opt==2){
if(m[x]==0) continue;
if(mm[x]<cnt){
mm[x]++;
if(m[x]>0) m[x]=1;
}
m[x]-=min(m[x],y);
}
else if(opt==3) {
cnt++;
}else{
if(mm[x]<cnt){
mm[x]++;
if(m[x]>0) m[x]=1;
}
printf("%lld\n",m[x]);
}
}
return 0;
}