Pagini recente » Cod sursa (job #1222985) | Cod sursa (job #2475004) | Cod sursa (job #603185) | Cod sursa (job #3158258) | Cod sursa (job #1390013)
#include <fstream>
#define DMAX 100004
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int n, m;
int A[DMAX];
void citire();
void update(int poz, int val);
int query(int poz);
int main()
{
citire();
return 0;
}
void citire()
{
int i, tip, a, b;
fin>>n>>m;
for(i=1;i<=n;++i)
{
fin>>b;
update(i, b);
}
for(i=1;i<=m;++i)
{
fin>>tip;
if(tip==0)
{
fin>>a>>b;//valorii de pe pozitia a i se adauga valoarea b
update(a, b);
}
if(tip==1)
{
fin>>a>>b;//suma valorilor din intervalul [a, b]
fout<<query(b)-query(a-1)<<'\n';
}
if(tip==2)
{
fin>>a;//Sa se determine pozitia minima k astfel incat suma valorilor primilor k termeni sa fie exact a
fout<<"nu stiu"<<'\n';
}
}
}
void update(int poz, int val)
{
int p;
for(p=poz;p<=n;p=p+((p^(p-1))&p))
A[p]+=val;
}
int query(int poz)
{
int p, suma=0;
for(p=poz;p;p=p-((p^(p-1))&p))
suma+=A[p];
return suma;
}