Pagini recente » Cod sursa (job #1731725) | Istoria paginii arhiva | Cod sursa (job #1202392) | Cod sursa (job #786948) | Cod sursa (job #113066)
Cod sursa(job #113066)
#include <string.h>
#include <stdio.h>
#include <math.h>
#define N 15001
int main()
{FILE *fi,*fo;
fi=fopen("datorii.in","r");
fo=fopen("datorii.out","w");
// ifstream fi("datorii.in");
// ofstream fo("datorii.out");
long n,m,a[N],e[125],i,j,g,p,q,f,d;
memset(a,0,sizeof(a));
memset(e,0,sizeof(e));
fscanf(fi,"%ld %ld",&n,&m);
// fi>>n>>m;
d=sqrt(n)+1;//nr de intervale
for (i=1;i<=n;i++)
{fscanf(fi,"%ld",&g);
//fi>>g;
a[i]=a[i-1]+g;}
for (i=1;i<=m;i++)
{fscanf(fi,"%ld %ld %ld",&f,&p,&q);
// fi>>f>>p>>q;
if(f)
{fprintf(fo,"%ld\n",a[q]+e[(q-1)/d+1]-a[p-1]-e[(p-2)/d+1]);
// fo<<a[q]+e[(q-1)/d+1]-a[p-1]-e[(p-2)/d+1]<<'\n';
}
else
{if(p%d==1)
{for (j=p/d+1;j<=d;j++)
{e[j]-=q;}
}
else
{for (j=p;j<=((p-1)/d+1)*d;j++)
{a[j]-=q;
}
for(j=(p-1)/d+2;j<=d;j++)
{e[j]-=q;}
}
}
}
fclose(fi);
fclose(fo);
return 0;
}