Cod sursa(job #852496)

Utilizator mariacMaria Constantin mariac Data 11 ianuarie 2013 12:43:54
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#include<math.h>
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int a[15001],b[130],n,bat1;

void act(int ziua,int val)
{
	a[ziua]-=val;
	b[(ziua-1)/bat1+1]-=val;
}

void inter(int z1,int z2)
{	
	int suma=0,i;
	for(i=z1;i<=z2;i++)
	{
		if(i%bat1==1&&i+bat1-1<=z2)
		{
			suma+=b[i/bat1+1];
			i=i+bat1-1;
		}
		else suma+=a[i];
	}
	fout<<suma<<"\n";
}
int main()
{
	int m,i;
	double k;
	fin>>n>>m;
	
	for(i=1;i<=n;i++)
		fin>>a[i];
	k=n;
	k=sqrt(k);
	bat1=(int)k;
	for(i=1;i<=n;i++)
		b[(i-1)/bat1+1]+=a[i];
	
	for(i=1;i<=m;i++)
	{
		int x,y,o;
		
		fin>>o>>x>>y;
		
		if(o==0)act(x,y);
			else inter(x,y);
	}
	
	return 0;
}