Esempio n. 1
0
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;
}
Esempio n. 2
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];
}
Esempio n. 3
0
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;
}