Pagini recente » Cod sursa (job #1151931) | Cod sursa (job #3251888) | Rating Shanel Alge (normanff3112) | Cod sursa (job #3244839) | Cod sursa (job #2470521)
#include <fstream>
using namespace std;
ifstream fin ("cuburi2.in");
ofstream fout ("cuburi2.out");
struct ura
{
int nr;
unsigned long long s1,s2,x1,x2;
};
ura v[250001];
int main()
{
int n,m,i,a,b,l1,l2,mij,poz;
unsigned long long s1,s2,s,mini;
fin>>n>>m;
for (i=1;i<=n;i++)
{
fin>>v[i].nr;
v[i].s1=v[i-1].s1+v[i].nr;
v[i].x1=v[i-1].x1+v[i].s1;
}
for (i=n;i>=1;i--)
{
v[i].s2=v[i+1].s2+v[i].nr;
v[i].x2=v[i+1].x2+v[i].s2;
}
for (i=1;i<=m;i++)
{
fin>>a>>b;
mini=v[n].x1+v[1].x2;
l1=a;
l2=b;
while (l1<=l2)
{
mij=(l1+l2)/2;
if (mij!=a)
s1=v[mij-1].x1-v[a-1].x1-v[a-1].s1;
else
s1=0;
if (mij!=b)
s2=v[mij+1].x2-v[b+1].x2-v[b+1].s2;
else
s2=0;
s=s1+s2;
if (s<mini)
{
mini=s;
poz=mij;
}
if (s1<s2)
l1=mij+1;
else
if (s1>s2)
l2=mij-1;
else
l1=l2+1;
}
fout<<poz<<" "<<mini<<'\n';
}
return 0;
}