Pagini recente » Cod sursa (job #1535968) | Cod sursa (job #1131189) | Cod sursa (job #2079831) | Cod sursa (job #1716596) | Cod sursa (job #1914456)
#include <fstream>
using namespace std;
ifstream f("aib.in");
ofstream g("aib.out");
int arb[100005], n, m, i, j, x, y, t;
void update(int x, int poz) {
while (poz <= n) {
arb[poz] += x;
poz += (poz & -poz);
}
}
int suma(int poz) {
int s = 0;
while (poz > 0) {
s += arb[poz];
poz -= (poz & -poz);
}
return s;
}
int main() {
f >> n >> m;
for (i = 1; i <= n; i++) {
f >> x;
update(x, i);
}
while (m--) {
f >> t >> x;
if (t <2) {
f>>y;
if (t==0)
update(y,x);
else g << suma(y)-suma(x-1)<<'\n';
} else {
int p = 1;
while (p < n) p *= 2;
for (i = 0; p; p /= 2) {
if (i+p > n)
continue;
if (suma(i+p) <= x)
i += p;
}
g << i << '\n';
}
}
return 0;
}