Pagini recente » Cod sursa (job #392291) | Cod sursa (job #2971273) | Cod sursa (job #1372973) | Cod sursa (job #2423320) | Cod sursa (job #2783217)
#include <bits/stdc++.h>
using namespace std;
ifstream in("cuburi2.in");
ofstream out("cuburi2.out");
long long n,m,x,y,p,cost;
int ss[250001],sd[250001],v[250001],sp1[250001],sp2[250001];
int st,dr,mij,i;
int main()
{
in>>n>>m;
for(i=1;i<=n;i++)
{
in>>v[i];
sd[i]=sd[i-1]+v[i];
}
for(i=n;i>=1;i--)
{
ss[i]=ss[i+1]+v[i];
}
for(i=1;i<=n;i++)
{
sp1[i]=sp1[i-1]+sd[i-1];
}
for(i=n;i>=1;i--)
{
sp2[i]=sp2[i+1]+ss[i+1];
}
for(i=1;i<=m;i++)
{
in>>x>>y;
st=x;
dr=y;
p=x;
while(st<=dr)
{
mij=(st+dr)/2;
if(sd[mij-1]-sd[x-1]<sd[y]-sd[mij-1])
{
st=mij+1;
p=mij;
}
else
dr=mij-1;
}
cost = sp1[p] - sp1[x] - sd[x - 1] * (p - x);
cost = cost + sp2[p] - sp2[y] - ss[y + 1] * (y - p);
out<<p<<' '<<cost<<'\n';
}
return 0;
}