Pagini recente » Cod sursa (job #1333317) | Cod sursa (job #2600203) | Cod sursa (job #1102106) | Cod sursa (job #2204932) | Cod sursa (job #1563362)
#include<iostream>
#include<fstream>
using namespace std;
long long v[250002],n;
long long s1[250002],s2[250002];
char *now,buffer[100000];
ifstream f("cuburi2.in");
inline void bfill()
{
if (*now==0)
{
f.get(buffer,100000,'\0');
now=buffer;
}
}
int read()
{
int x=0;
while (*now<'0'||*now>'9')
{
now++;
bfill();
}
while (*now>='0'&&*now<='9')
{
x=10*x+*now-'0';
now++;
bfill();
}
return x;
}
int main()
{
ofstream g("cuburi2.out");
int m,q,w;
f>>n>>m;
now=buffer;
bfill();
for (int i=1;i<=n;i++)
{v[i]=read();
v[i]+=v[i-1];
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;
q=read();
w=read();
int poz=q,d;
for (d=1;d<=w-q+1;d<<=1);
for (;d;d>>=1)
if ((poz+d<=w)&&(v[poz+d-1]-v[q-1]<v[w]-v[poz+d-1]))
poz+=d;
long long st,dr;
st=s1[poz-1]-s1[q-1]-(poz-q)*v[q-1];
dr=s2[poz+1]-s2[w+1]-(w-poz)*(v[n]-v[w]);
g<<poz<<" "<<st+dr<<'\n';
}
return 0;
}