Pagini recente » Cod sursa (job #2832448) | Cod sursa (job #2969886) | Cod sursa (job #49939) | Cod sursa (job #1123286) | Cod sursa (job #291918)
Cod sursa(job #291918)
#include <stdio.h>
long long A[250010];
long long V[250010];
int N;
int main(int argc, char *argv[]) {
int i, M, x, y, l;
FILE *fi = fopen("cuburi2.in", "r");
fscanf(fi, "%d %d", &N, &M);
for (i = 1; i <= N; ++i)
fscanf(fi, "%lld", A+i);
for (i = 1; i <= N; ++i)
V[i] = V[i-1] + A[i];
FILE *fo = fopen("cuburi2.out", "w");
while (M--) {
fscanf(fi, "%d %d", &x, &y);
for (i=1; i < y-x; i <<= 1)
;
l = x;
for (; i > 0; i >>= 1) {
//printf("l = %d; i = %d; x = %d; y = %d\n", l, i, x, y);
//printf("%d | %d\n", V[l+i-1] - V[x-1], V[y] - V[l+i-1]);
if ((l+i <= y) && (V[l+i-1] - V[x-1] <= V[y] - V[l+i-1]))
l += i;
//printf("l = %d\n", l);
}
fprintf(fo, "%d 0\n", l);
}
fclose(fo);
fclose(fi);
return 0;
}