Cod sursa(job #254447)

Utilizator ScrazyRobert Szasz Scrazy Data 7 februarie 2009 12:11:50
Problema Cuburi2 Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.79 kb
#include <cstdio>

#define nmax 5001

int n, m;
int a[nmax];
int s[nmax][nmax];

inline int abs(int a)
{
	return a < 0 ? -a : a;
}
void read()
{
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; ++i)
		scanf("%d", &a[i]);
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			s[i][j] = s[i][j - 1] + a[j] * abs(i - j);
}

void solve()
{
	int x, y, maxp, max;
	for (; m; --m)
	{
		max = maxp = -1;
		scanf("%d%d", &x, &y);
		for (int i = x; i <= y; ++i)
		{
			int newc = s[i][i - 1] - s[i][x - 1] + s[i][y] - s[i][i];
			if (newc < max || max == -1)
			{
				max = newc;
				maxp = i;
			}
		}
		printf("%d %d\n", maxp, max);
	}
}

int main()
{
	freopen("cuburi2.in","r",stdin);
	freopen("cuburi2.out","w",stdout);
	read();
	solve();
	return 0;
}