int main(void) { scanf("%d",&n); int i; for(i=1;i<=n;i++) { scanf("%d",&s[i]); ss[i]=s[i]; nxt[i]=i+1; } nxt[n+1]=n+1; s[n+1]=2000000000; int m; scanf("%d",&m); for(;m>0;m--) { int op,p,x,k; scanf("%d",&op); if(op==1) { scanf("%d %d",&p,&x); int nn=find_nxt(p,x); } else { scanf("%d",&k); printf("%d\n",ss[k]-s[k]); } /* for(i=1;i<=n;i++) printf("*%d ",s[i]); printf("\n"); */ } return 0; }
int find_nxt(int now,int remain) { // printf("!!%d %d\n",now,remain); if(now>=n+1) return n+1; if(s[now]>=remain) { s[now]-=remain; return now; } nxt[now]=find_nxt(nxt[now],remain-s[now]); s[now]=0; return nxt[now]; }
int main() { int n; scanf("%d",&n); int arr[15] = {-1}; int i = 0, j = n; while(j>0) { arr[i++] = j%2; j = j/2; } int sz = i; i--; print_array(arr,sz); for(j=i;j>=i/2;j--) swap((arr+j),(arr+i-j)); print_array(arr,sz); int* lrg = find_nxt(arr,sz,1); print_array(lrg,sz); int* sml = find_nxt(arr,sz,0); printf("done\n"); print_array(sml,sz); return 0; }