codeforces 371D

来源:互联网 发布:linux fork函数 编辑:程序博客网 时间:2024/05/21 09:38
#include<stdio.h>#define N  210000struct node {int x,next;__int64 count,vec;}pre[N];int n,flag;int find(int x) {if(x==n+1)return n+1;if(pre[x].count>pre[x].vec)  {    int h=pre[x].next; pre[h].count=pre[h].count+pre[x].count-pre[x].vec;pre[x].count=pre[x].vec;pre[x].x=pre[x].next=find(pre[x].next);}return pre[x].x;}int main() {__int64 m;int i,j,k;while(scanf("%d",&n)!=EOF) {for(i=1;i<=n;i++) {pre[i].next=i+1;pre[i].count=0;pre[i].x=i;}pre[n].x=n;pre[n].count=0;for(i=1;i<=n;i++) {scanf("%I64d",&m);pre[i].vec=m;}scanf("%d",&m);flag=0;while(m--) {scanf("%d",&k);if(k==1) {scanf("%d%d",&i,&j);if(find(i)!=n+1) {     pre[i].count+=j; find(i);}}else  {scanf("%d",&i);printf("%I64d\n",pre[i].count);}}}return 0;}
原创粉丝点击