Pagini recente » Cod sursa (job #696108) | Cod sursa (job #2365214) | Cod sursa (job #727385) | Cod sursa (job #1935556) | Cod sursa (job #2988587)
//aib (infoarena)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int A[1000];
int n, q;
int query(int p) {
int suma = 0;
for (int i = p; i; i -= (i & -i)) {
suma += A[i];
}
return suma;
}
void update(int p, int val) {
for (int i = p; i <= n; i += (i & -i)) {
A[i] += val;
}
}
int cb(int st, int dr, int val) {
int mij = (st + dr) / 2;
int aux = query(mij);
if (aux == val) {
return mij;
}
else if (aux > val) {
return cb(st, mij, val);
}
else if (aux < val) {
return cb(mij + 1, dr, val);
}
}
int main()
{
fin >> n >> q;
int aux;
for (int i = 1; i <= n; i++) {
fin >> aux;
update(i, aux);
}
int pos, val, a, b;
for (int i = 1; i <= q; i++) {
int t;
fin >> t;
if (t == 0) {
fin >> pos >> val;
update(pos, val);
}
else if (t == 1) {
fin >> a >> b;
fout << query(b) - query(a - 1) << '\n';
}
else if (t == 2) {
fin >> a;
fout << cb(1, n, a) << '\n';
}
}
fin.close();
fout.close();
}