Pagini recente » Cod sursa (job #1712356) | Cod sursa (job #1969158) | Cod sursa (job #1281564) | Cod sursa (job #2547366) | Cod sursa (job #2942555)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
ifstream in("aib.in");
ofstream out("aib.out");
#define ub(x) (x&(-x))
const int f=2e+5;
int aib[f],aib2[f];
void add(int poz,int val)
{
aib[poz]+=val;
}
int sum(int a,int b)
{
int s=0;
for (int i=a;i<=b;i++)
{
s+=aib[i];
}
return s;
}
int sumpoz(int a)
{
int poz=1;
while (sum(1,poz)<a)
{
poz++;
}
return poz;
}
int main()
{
int n,intact,cer,ceract,v1,v2;
in >> n >> cer;
for (int i=1;i<=n;i++)
{
in >> intact;
aib[i]=intact;
for (int j=i-ub(i)+1;j<=i;j++)
{
aib2[i]+=aib[j];
}
}
while (cer--)
{
in >> ceract;
if (ceract == 0)
{
in >> v1 >> v2;
add(v1,v2);
}
else if (ceract == 1)
{
in >> v1 >> v2;
out << sum(v1,v2);
out << "\n";
}
else if (ceract ==2)
{
in >> v1;
out << sumpoz(v1);
out << "\n";
}
}
}