Pagini recente » Cod sursa (job #1951522) | Cod sursa (job #16800) | Cod sursa (job #243105) | Cod sursa (job #1283694) | Cod sursa (job #1607088)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("aib.in");
ofstream out("aib.out");
int aib[100003];
int n,m;
void add(int poz, int a) {
for(int i = poz; i < n; i++)
aib[i] += a;
}
int bin(int val) {
int i, step;
for (step = 1; step < n; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < n && aib[i + step] <= val)
i += step;
if(aib[i+step] == val)
return i;
else
return -2;
}
int main() {
in >> n >> m;
for(int i = 0; i < n; i++)
in >> aib[i];
for(int i = 1; i < n; i++)
aib[i] += aib[i-1];
int t,a,b;
for(int i = 0; i < m; i++) {
in >> t;
if(t == 0) {
in >> a >> b;
add(a-1,b);
} else if(t == 1) {
in >> a >> b;
out << aib[b-1]-aib[a-2] << '\n';
} else if(t == 2) {
in >> a;
out << bin(a)+1 << '\n';
}
}
return 0;
}