Pagini recente » Cod sursa (job #2590789) | Cod sursa (job #1383743) | Cod sursa (job #1912629) | Cod sursa (job #1716876) | Cod sursa (job #1666278)
#include <fstream>
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
long long n,k,i,j,p,x,y,u,mij,sol,s,v[250005],dr[250005],st[250005];
int main()
{ f>>n>>k;
f>>v[1];
st[1]=v[1];
for (i=2;i<=n;++i) {
f>>v[i];
v[i]+=v[i-1];
st[i]=v[i]+st[i-1];}
for (i=n;i>=1;--i)
dr[i]=v[n]-v[i-1]+dr[i+1];
for (i=1;i<=k;++i) {
f>>x>>y;
p=x;
u=y;
while (p<=u) {
mij=(p+u)/2;
if (v[mij]-v[x-1]>v[y]-v[mij]) {
sol=mij;
u=mij-1;}
else
p=mij+1;}
s=st[sol-1]-st[x-1]-v[x-1]*(sol-x);
s+=dr[sol+1]-dr[y+1]-(v[n]-v[y])*(y-sol);
g<<sol<<" "<<s<<'\n';
}
return 0;
}