Mai intai trebuie sa te autentifici.
Cod sursa(job #597686)
Utilizator | Data | 22 iunie 2011 21:10:28 | |
---|---|---|---|
Problema | Datorii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.69 kb |
#include <fstream>
using namespace std;
int a[16000];
int n,m,c,x,y,t;
void modifica(int poz, int val)
{
while (poz<=n)
{
a[poz]-=val;
poz+=(poz ^ (poz & (poz-1)));
}
}
long long suma(int poz)
{
long long t=0;
while (poz>0)
{
t+=a[poz];
poz-=(poz ^ (poz & (poz-1)));
}
return t;
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
f >> n >> m;
fill_n(a,n+1,0);
int i;
for (i=1; i<=n; i++)
{
f >> t;
modifica(i,-t);
}
for (i=0; i<m; i++)
{
f >> c >> x >> y;
if (c==1)
g << suma(y)-suma(x-1) << "\n";
else modifica(x,y);
}
}