Pagini recente » Cod sursa (job #4217) | Cod sursa (job #1064525) | Cod sursa (job #1444478) | Cod sursa (job #230144) | Cod sursa (job #1558919)
#include<fstream>
using namespace std;
int v[250002],n;
long long s1[250002],s2[250002];
long long val(int p,int i,int j)
{
long long st,dr;
st=s1[p-1]-s1[i-1]-(p-i)*v[i-1];
dr=s2[p+1]-s2[j+1]-(j-p)*(v[n]-v[j]);
return st+dr;
}
int main()
{
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
int m,q,w;
f>>n>>m;
for (int i=1;i<=n;i++)
{f>>v[i];
v[i]+=v[i-1];}
for (int i=1;i<=n;i++)
s1[i]=v[i]+s1[i-1];
for (int i=n;i>0;i--)
s2[i]=s2[i+1]+v[n]-v[i-1];
while (m--)
{
int q,w;
f>>q>>w;
int poz=q;
for (int d=(w-q+1)/2;d>0;d/=2)
while ((poz+d<=w)&&(v[poz+d-1]-v[q-1]<v[w]-v[poz+d-1]))
poz+=d;
while (poz>q&&v[poz-2]-v[q-1]>=v[w]-v[poz-2]) poz--;
g<<poz<<" "<<val(poz,q,w)<<'\n';
}
return 0;
}