Pagini recente » Cod sursa (job #3213720) | Cod sursa (job #1264015) | Cod sursa (job #238897) | Cod sursa (job #1889719) | Cod sursa (job #2396305)
#include <cstdio>
#define int_ll long long int
using namespace std;
int n, m;
int_ll arr[100000];
int cautare_binara(int x) {
int sol = -1;
int left = 1, right = n+1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x) {
sol = mid;
break;
}
if (arr[mid] > x) right = mid - 1;
else left = mid + 1;
}
return sol;
}
int main() {
freopen("aib.in", "r", stdin);
freopen("aib.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for (int i = 1; i <= n; ++i)
scanf("%d ", &arr[i]);
scanf("\n");
for (int i = 2; i <= n; ++i)
arr[i] += arr[i-1];
for (int x = 0; x < m; ++x) {
int a, b, cod;
scanf("%d ", &cod);
if (cod == 0) {
scanf("%d %d\n", &a, &b);
for (int i = a; i <= n; ++i)
arr[i] += b;
}
else if (cod == 1) {
scanf("%d %d\n", &a, &b);
printf("%lld\n", arr[b] - arr[a-1]);
}
else {
scanf("%d\n", &a);
printf("%d\n", cautare_binara(a));
}
}
return 0;
}