Cod sursa(job #254722)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 7 februarie 2009 13:53:33
Problema Cuburi2 Scor 20
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.69 kb
#include<stdio.h>
long n,m,i,x,y,k,poz,a[250000];
long min,s1,s2,sp[250000],s;//long long de 250000
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",&a[i]);
 for(k=1;k<=m;++k)
   {scanf("%ld%ld",&x,&y);
    if(x>y){s1=x;x=y;y=s1;}
    s1=0;
    s2=0;
    s=0;
    min=2000000000;//20000000000000000ll
    sp[x-1]=0;
    for(i=x;i<=y;++i)
       {sp[i]=sp[i-1]+a[i];
	s+=a[i];
	s2+=a[i]*(i-x);}
    poz=0;
    if(s1+s2<min){min=s1+s2;poz=x;}
    for(i=x;i<y;++i)
       {s1+=sp[i];
	s2-=(s-sp[i]);
	if(s1+s2<min){min=s1+s2;poz=i+1;}
	}
   printf("%ld %ld\n",poz,min);
  }
 return 0;
}