Pagini recente » Monitorul de evaluare | Statistici Sonea Andreea (Sonea_Andreea_323CB) | Statistici Nadolu Bogdan Ionut (Nadolu_Bogdan_Ionut_322CC) | Diferente pentru utilizator/sandupetrasco intre reviziile 20 si 21 | Cod sursa (job #14314)
Cod sursa(job #14314)
#include<fstream>
#include<math.h>
using namespace std;
fstream f,g;
long A[15001],B[130][130],N,M,i,j,x,y,z,K,s,s1,s2,j1,j2,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];
}
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];
}
else
{
j1=y/K; j2=z/K; i1=y%K+1; i2=z%K+1;
if (j1==j2)s=B[j2][i2]-B[j1][i1-1];
else
{
s1=B[j1][K]-B[j1][i1-1];
s2=B[j2][i2];
s=0;
for(l=j1+1;l<j2;l++) s=s+B[l][K];
s=s+s1+s2;
}
g<<s1+s+s2<<endl;
}
}
g.close();
f.close();
return 0;
}