Cod sursa(job #855684)

Utilizator costel93FMI - Dumea Eduard Constantin costel93 Data 15 ianuarie 2013 14:57:42
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<math.h>
using namespace std;
 
ifstream f("datorii.in");
ofstream g("datorii.out");
 
int a[15001], b[130], n, nr, r;
 
void act(int ziua,int val)
{
    ziua--;
    a[ziua]-=val;
    b[ziua/r]-=val;
}
 
void inter(int z1,int z2)
{   
    int suma=0,i;
    z1--;
    z2--;
    int b1,b2;
    b1=z1/r;
    b2=z2/r;
    if(b1==b2)
		for(i=z1;i<=z2;i++)
			suma+=a[i];
	else
	{
		int x;
		x=(b1+1)*r;
		for(i=z1;i<x;i++)
			suma+=a[i];
		for(i=b1+1;i<b2;i++)
			suma+=b[i];
		x=b2*r;
		
		for(i=x;i<=z2;i++)
			suma+=a[i];
	}
             
 
    g<<suma<<"\n";
}
int main()
{
    int m,i;
    double k;
    f>>n>>m;
     
    for(i=0;i<n;i++)
        f>>a[i];
	
	k=n;
    k=sqrt(k);
	r=int(k);
    nr=0;
	
    for(i=1;i<n;i++)
        {   
            if(i%r==0)
				++nr;
            b[nr]+=a[i];
        }
             
     
    for(i=1;i<=m;i++)
    {
        int x,y,o;
         
        f>>o>>x>>y;
         
        if(o==0)
			act(x,y);
		else 
			inter(x,y);
    }
     
    return 0;
}