Pagini recente » Cod sursa (job #2487129) | Cod sursa (job #403727) | Cod sursa (job #283428) | Cod sursa (job #2194798) | Cod sursa (job #307044)
Cod sursa(job #307044)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
using namespace std;
int n;
vector<int> a(15001,0);
void modif(int poz,int x)
{ int c,j;
a[poz]+=x;
do
{
c=poz;
j=0;
while (poz%2==0)
{
poz=poz/2;
j++;
}
poz=c+(1<<j);
if (poz<=n)
a[poz]+=x;
else
return;
}while (1);
}
int sum(int poz)
{ int c,j,s;
if (poz<=0) return 0;
s=a[poz];
do
{
c=poz;
j=0;
while (poz%2==0)
{
poz=poz/2;
j++;
}
poz=c-(1<<j);
if (poz>0)
s=s=s+a[poz];
else
return s;
}while (1);
}
int main()
{
int m,i,x,y,c;
f>>n>>m;
for (i=1;i<=n;i++)
{
f>>x;
modif(i,x);
}
for (i=1;i<=m;i++)
{
f>>c>>x>>y;
if (c==0)
modif(x,-y);
else
g<<sum(y)-sum(x-1)<<"\n";
}
f.close();
g.close();
return 0;
}