Cod sursa(job #254334)

Utilizator mottyMatei-Dan Epure motty Data 7 februarie 2009 11:19:39
Problema Cuburi2 Scor 45
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.71 kb
#include<stdio.h>

#define N 250001

int t[N],s[N],n,m;

void cit()
{
	scanf("%d%d",&n,&m);
	s[0]=0;
	for( int i=1 ; i<=n ; ++i )
	{
		scanf("%d",&t[i]);
		s[i]=s[i-1]+t[i];
	}
}

int p;

long long c;

void calc(int x,int y)
{
	int i,st,sp=0;
	c=0;
	st = s [ y ] - s [ x - 1 ];
	for( i=x ; i<=y && sp<=st/2 ; ++i )
	{
		sp+=t[i];
		p=i;
	}
	for( i=x ; i<=y ; ++i )
		if(i<p)
			c+=(p-i)*t[i];
		else if(i>p)
			c+=(i-p)*t[i];
}

void afis()
{
	int x,y;
	for( int i=0 ; i<m ; ++i )
	{
		scanf("%d%d",&x,&y);
		calc(x,y);
		printf("%d %lld\n",p,c);
	}
}

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