Cod sursa(job #465402)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 24 iunie 2010 10:13:56
Problema Cuburi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream.h>
long long a[250002],A[250002],b[250002],B[250002],st,dr;
int v[250002],n,m,x,y,poz;
void BS(int i, int j)
{int m;
while(i<=j)
   {m=(i+j)>>1;
   if(a[m-1]-a[x-1]<a[y]-a[m-1])
	{i=m+1;
	poz=m;}
   else
	j=m-1;}}
int main()
{int i;
ifstream q("cuburi2.in");
ofstream w("cuburi2.out");
q>>n>>m;
for(i=1;i<=n;++i)
  {q>>v[i];
  a[i]=a[i-1]+v[i];
  A[i]=A[i-1]+a[i-1];}
  for (i=n;i>0;--i){
	b[i]=b[i+1]+v[i];
	B[i]=B[i+1]+b[i+1];}
  for (i=1;i<=m;++i)
    {q>>x>>y;
	poz=x;
	BS(x,y);
	st=A[poz]-A[x-1]-a[x-1]*(poz-x+1);
	dr=B[poz]-B[y+1]-b[y+1]*(y-poz+1);
	w<<poz<<" "<<st+dr<<"\n";}
return 0;}