Cod sursa(job #254242)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 7 februarie 2009 02:18:22
Problema Cuburi2 Scor Ascuns
Compilator cpp Status done
Runda Marime 0.81 kb
#include <stdio.h>

#define MAXN 250010
#define inf 1000000000000000000LL
#define ll long long

int N, M, NR, P[10];
ll best;
int A[MAXN];
ll V[MAXN], V2[MAXN];
ll S[MAXN], S2[MAXN];

int main()
{
	freopen("cuburi2.in" , "r", stdin);
	freopen("cuburi2.out", "w", stdout);

	int i, j, x, y;

	scanf("%d %d ", &N, &M);

	for (i = 1; i <= N; i++) scanf("%d ", &A[i]);

	for (j = 1; j <= M; j++)
	{
		scanf("%d %d ", &x, &y);

		S[x-1] = V[x-1] = 0;
		S2[y+1] = V2[y+1] = 0;

		for (i = x; i <= y; i++) 
		{
			S[i] = S[i-1] + A[i];
			V[i] = V[i-1] + S[i-1];
		}

		for (i = y; i >= x; i--)
		{
			S2[i] = S2[i+1] + A[i];
			V2[i] = V2[i+1] + S2[i+1];
		}

		best = inf;

		for (i = x; i <= y; i++)
			if (V2[i] + V[i] < best)
			{
				best = V2[i] + V[i];
				P[1] = i;
			}

		printf("%d %lld\n", P[1], best);
	}

	return 0;
}