Cod sursa(job #381795)
| Utilizator | Data | 11 ianuarie 2010 17:22:35 | |
|---|---|---|---|
| Problema | Datorii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<fstream>
using namespace std;
int arb[15005],n,m;
ifstream q("datorii.in");
ofstream w("datorii.out");
void plus(int x, int v)
{for(x=x;x<=n;x=x+(x^(x-1))&x)
arb[x]=arb[x]+v;}
int qu(int x)
{int s=0;
for(;x;x=x=x-(x^(x-1))&x)
s=s+arb[x];
return s;
}
int main()
{int i,val,op,a,b;
q>>n>>m;
for(i=1;i<=n;i++)
{q>>val;
plus(i,val);}
for(i=1;i<=m;i++)
{q>>op;
if(op==0)
{q>>a>>b;
plus(a,-b);}
if(op==1)
{q>>a>>b;
w<<qu(b)-qu(a-1)<<'\n';}}
return 0;}
