Pagini recente » Cod sursa (job #2830785) | Cod sursa (job #2236957) | Cod sursa (job #1281533) | Cod sursa (job #1507241) | Cod sursa (job #832538)
Cod sursa(job #832538)
#include <stdio.h>
#include <math.h>
#define Dim 100005
#define dim 317
using namespace std;
FILE *f=fopen("datorii.in","r"), *g=fopen("datorii.out","w");
int a[Dim],zone[dim];
int n,m,z,i,A,B,C,poz,pozb,pozc,sum,j;
int main()
{
fscanf(f,"%d%d",&n,&m);
z = sqrt(m);
for(i=1; i<=m; i++)
{fscanf(f,"%d",&a[i]);
if(i%z == 0) zone[i/z] += a[i];
else zone[i/z +1] += a[i];
}
for(i=1; i<=n; i++)
{fscanf(f,"%d%d%d",&A,&B,&C);
if(A == 0)
{a[B]-=C;
if(B%z == 0) pozb = B/z; //aflu in ce zona se afla indicele B
else pozb = B/z+1;
zone[pozb]-=C;
}
else
{sum = 0;
if(B%z == 0) pozb = B/z; //aflu in ce zona se afla indicele B
else pozb = B/z+1;
if(C%z == 0) pozc = C/z; //aflu in ce zona se afla indicele C
else pozc = C/z+1;
for(j=pozb; j<=pozc; j++) sum+=zone[j];
for(j=pozb*z; j<B; j++) sum-=a[j];
for(j=pozc*z; j>C; j--) sum-=a[j];
fprintf(g,"%d\n",sum);
}
}
return 0;
}