Cod sursa(job #275672)

Utilizator andumMorie Daniel Alexandru andum Data 10 martie 2009 16:47:15
Problema Cuburi2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#define NMAX 250001

long n,m,x,y,i,j,h,v[NMAX],a[2][NMAX];

void min(int st, int dr)
{
 long i,min,p;

 p=st; min=a[0][st]+a[1][st];
 for (i=st+1;i<=dr;++i)
	if (min>(a[0][i]+a[1][i]))
		{
		 min=a[0][i]+a[1][i];
		 p=i;
		}
 printf("%ld %ld\n", p, min);
}

int main()
{
 freopen("cuburi2.in","r",stdin);
 freopen("cuburi2.out","w",stdout);
 scanf("%ld %ld", &n, &m);
 for (i=1;i<=n;++i)
	scanf("%ld", &v[i]);
 for (i=1;i<=m;++i)
	{
	 scanf("%ld %ld", &x, &y);
	 for (j=x;j<=y;++j)
		{ a[0][j]=0; a[1][j]=0; }
	 for (j=x+1;j<=y;++j)
	  for (h=j-1;h>=x;--h)
		a[0][j]+=v[h]*(j-h);
	 for (j=y-1;j>=x;--j)
	  for (h=j+1;h<=y;++h)
		a[1][j]+=v[h]*(h-j);
	 min(x,y);
	}
 return 0;
}