Cod sursa(job #268850)

Utilizator cristiprgPrigoana Cristian cristiprg Data 1 martie 2009 22:10:36
Problema Cuburi2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <climits>
#define DIM 250005
#define INF LONG_MAX

int n, m, v1[DIM];
long v2[DIM];

long abs(int x)
{
	if (x > 0)
		return x;
	else
		return -x;
}

void citire(FILE *f)
{

	fscanf(f, "%d%d", &n, &m);
	int i;
	for (i = 1; i <= n; i++)
		fscanf(f, "%d", &v1[i]);

//	for (i = 1; i <= n; i++)
//		printf("%d ", v1[i]);
}

void refresh(int x, int y)
{
	for(int i = x; i <= y; i++)
		v2[i] = 0;
}

int main()
{
	FILE *f = fopen("cuburi2.in", "r");
	FILE *out = fopen("cuburi2.out", "w");

	citire(f);
	int i,x , y, min, ibun;
	for (int z = 1; z <= m; z++)
	{
		fscanf(f, "%d%d", &x, &y);

		for (int k = x; k <= y ; k++)
			for (i = x; i <= y ; i++)
				v2[i] +=(long)(v1[k] * abs(i-k));

		min = INF;
		ibun = -1;
		for (i = x; i <= y; i++)
			if (v2[i] < min)
				min = v2[i], ibun = i;

		fprintf(out, "%d %d\n", ibun, min);
		if (z != m)
			refresh(x, y);
	}

	fclose(f);
	fclose(out);
	return 0;
}