Pagini recente » Cod sursa (job #717603) | Cod sursa (job #2662450) | Cod sursa (job #2420507) | Cod sursa (job #2553248) | Cod sursa (job #14321)
Cod sursa(job #14321)
#include<fstream>
#include<math.h>
using namespace std;
fstream f,g;
long A[15001],B[130][130],C[130],N,M,i,j,x,y,z,K,s,s1,s2,t1,t2,i1,i2,l;
int main()
{
f.open("datorii.in",ios::in);
g.open("datorii.out",ios::out);
f>>N>>M;
K=(long)ceil(sqrt(1.0*N));
for (i=0;i<=K*K;i++) A[i]=0;//f.f.important-presupun ca este vorba de K*K zile
for (i=1;i<=N;i++) f>>A[i];
for (j=0;j<K;j++)
{
B[j][0]=0;
for (i=j*K+1;i<=j*K+K;i++)
B[j][i-j*K]=B[j][i-1-j*K]+A[i];
if (j==0) C[j]=B[j][K];
else C[j]=C[j-1]+B[j][K];
}
for (i=1;i<=M;i++)
{
f>>x>>y>>z;
if (x==0)
{
A[y]=A[y]-z;
j=y/K;
B[j][0]=0;
for (l=j*K+1;l<=j*K+K;l++)
B[j][l-j*K]=B[j][l-1-j*K]+A[l];
if (j==0)C[j]=B[j][K];
else for (l=j;l<K;l++)
C[l]=C[l-1]+B[l][K];
}
else
{
t1=y/K; t2=z/K; i1=y%K+1; i2=z%K+1;
if (t1==t2)s=B[t2][i2]-B[t1][i1-1];
else
{
s1=B[t1][K]-B[t1][i1-1];
s2=B[t2][i2];
s=C[t2-1]-C[t1];
s=s+s1+s2;
}
g<<s1+s+s2<<endl;
}
}
g.close();
f.close();
return 0;
}