Pagini recente » Cod sursa (job #3136750) | Cod sursa (job #868314) | Cod sursa (job #2850643) | Cod sursa (job #356977) | Cod sursa (job #2457833)
#include <iostream>
#include <stdio.h>
using namespace std;
int n, m;
int aib[15001];
#define zeros(x) ( (x ^ (x - 1)) & x )
int tartozas_beolvas(int nap, int penz)
{
for(int i=nap; i<=n; i+=zeros(i))
{
aib[i]+=penz;
}
}
void fizet(int nap, int penz)
{
for(int i=nap; i<=n; i+=zeros(i))
{
aib[i]-=penz;
}
}
int lekerdez(int kezd, int veg)
{
int ered_veg = 0;
for(int i=veg; i>=1; i-=zeros(i))
{
ered_veg += aib[i];
}
int ered_kezd = 0;
for(int i=kezd-1; i>=1; i-=zeros(i))
{
ered_kezd += aib[i];
}
return ered_veg-ered_kezd;
}
int main()
{
/*ifstream f("datorii.in");
ofstream g("datorii.out");*/
FILE * myInFile;
FILE * myOutFile;
myInFile = fopen ("datorii.in","r");
myOutFile = fopen ("datorii.out","w");
//adatok beolvasasa
fscanf(myInFile, "%d %d", &m, &n);
int tartozas;
for(int i=1; i<=n; i++)
{
fscanf(myInFile, "%d", &tartozas);
tartozas_beolvas(i, tartozas);
}
//muveletek feldolgozasa
int kod, a, b;
for(int i=1; i<=m; i++)
{
fscanf(myInFile, "%d %d %d", &kod, &a, &b);
if(kod==0)
{
fizet(a, b);
}
else fprintf(myOutFile, "%d\n", lekerdez(a, b));
// g<<lekerdez(a, b)<<endl;
}
return 0;
}