暴力+胡乱优化就过了。。tags给的东西似乎什么都没用到。。。。。CF的数据是不是有点水啊。。。。。果然是没有营养的题目。。。。。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int a[320000],v[320000],n,m,s,p,x,next[320000]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",a+i); next[i]=i+1; } next[n+1]=n+1; scanf("%d",&m); while(m--) { scanf("%d",&s); if(s==1) { scanf("%d%d",&p,&x); int i,j; for(i=p;i<=n;i=next[i]) { if(v[i]==a[i]) continue; int temp=min(a[i]-v[i],x); v[i]+=temp; x-=temp; if(!x) break; } if(v[i]==a[i]) i++; int t; for(j=p;j<i;j=t) { t=next[j]; next[j]=i; } } else if(s==2) { scanf("%d",&p); printf("%d ",v[p]); } } return 0; }