Pagini recente » Statistici Solovan Ilarion (iraziel) | Cod sursa (job #2138852) | Statistici Mirica Elena (elena.mirica) | Cod sursa (job #771120) | Cod sursa (job #1501139)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cuburi2.in");
ofstream out("cuburi2.out");
long long n,m,poz,x,y,i,costfinalst,costfinaldr;
long long inaltimi[250002], sumast[250002], costst[250002], sumadr[250002], costdr[250002];
void cautpoz(long long st, long long dr)
{
long long mij;
mij = (st+dr)/2;
if (st>dr)
{
return;
}
if (sumast[mij-1]-sumast[x-1]<sumast[y]-sumast[mij-1])
{
poz=mij;
cautpoz(mij+1,dr);
}
else
{
cautpoz(st,mij-1);
}
}
int main ()
{
in>>n>>m;
for (i=1;i<=n;i++)
{
in>>inaltimi[i];
sumast[i]=sumast[i-1]+inaltimi[i];
costst[i]=costst[i-1]+sumast[i-1];
}
for (i=n;i>0;i--)
{
sumadr[i]=sumadr[i+1]+inaltimi[i];
costdr[i]=costdr[i+1]+sumadr[i+1];
}
for (i=1;i<=m;i++)
{
in>>x>>y;
if(x>y)
{
int t=x;
x=y;
y=t;
}
cautpoz(x,y);
costfinalst = costst[poz]-(poz-x)*sumast[x-1]-costst[x];
costfinaldr = costdr[poz]-(y-poz)*sumadr[y+1]-costdr[y];
out<<poz<<' '<<costfinalst+costfinaldr;
out<<endl;
}
return 0;
}