Pagini recente » Cod sursa (job #1783519) | Cod sursa (job #2461349) | Cod sursa (job #734213) | Cod sursa (job #846389) | Cod sursa (job #1039790)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,x,y,a[15001],b[400],i,j,suma,nr,poz,poz1,s,cod,k;
f>>n>>m;
s=(int)sqrt(n);
nr=n/s;
k=1;
for(i=1;i<=nr;++i)
{suma=0;
for(j=1;j<=s;j++)
{ f>>a[k];
suma=suma+a[k];
k++; }
b[i]=suma;}
if(nr*s!=n)
for(i=nr*s+1;i<=n;i++)
{ f>>a[k];
b[nr]=b[nr]+a[k];
k++; }
for(int ii=1;ii<=m;ii++)
{ f>>cod>>x>>y;
if(x%s==0)
poz=x/s;
else
poz=x/s+1;
if(poz>nr)
poz=nr;
if(cod==0)
{ b[poz]=b[poz]-y; a[x]=a[x]-y;}
else
{ suma=0;
if(y%s==0)
poz1=y/s;
else
poz1=y/s+1;
if(poz1>nr)
poz1=nr;
if(poz1-poz>1)
for(i=poz+1;i<=poz1-1;i++)
suma=suma+b[i];
if(poz==poz1)
for(i=x;i<=y;i++)
suma=suma+a[i];
else
{for(i=x;i<=poz*s;i++)
suma=suma+a[i];
for(i=y;i>=(poz1-1)*s+1;i--)
suma=suma+a[i];}
g<<suma<<'\n';
}
}
f.close();
g.close();
return 0;
}