Cod sursa(job #401998)

Utilizator ghedany92Gheorghita Daniel ghedany92 Data 23 februarie 2010 12:01:51
Problema Arbori indexati binar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream.h>
ifstream fin("aib.in");
ofstream fout("aib.out");
int a[100005],b[100005];
long n,m,i,j,x,y,kappa,k;
int c;
/*long cautare (int x)
{
	long dr,st;
	st=1;
	dr=n;
	while(st<dr)
	{
		if (b[(st+dr)/2]==x) return (st+dr)/2;
		if (x>b[(st+dr)/2]) st=(st+dr)/2;
		if (x<b[(st+dr)/2]) dr=(st+dr)/2;
		if (b[st]==x) return st;
		if (b[dr]==x) return dr;
	}
return -51;
}

*/

int main()
{fin>>n>>m;
fin>>a[1];
b[1]=a[1];
b[0]=0;
for (i=2;i<=n;i++)
{
	fin>>a[i];
	b[i]=a[i]+b[i-1];
}
for (kappa=1;kappa<=m;kappa++)
{
	fin>>c;
	if (c==0)
	{
		fin>>x>>y;
		a[x]+=y;
		for (i=x;i<=y;i++)
			b[i]+=y;
	}
	if (c==1)
	{
		fin>>x>>y;
		fout<<b[y]-b[x-1]<<'\n';
	}
	if (c==2)
	{
		fin>>x; k=0;
		while (x!=b[k])
			k++;
		fout<<k<<'\n';
	}
}
fout.close();
return 0;
}