Pagini recente » Istoria paginii termeni-si-conditii | Cod sursa (job #1372389) | Cod sursa (job #3124953) | Cod sursa (job #573076) | Cod sursa (job #3280069)
//
// main.cpp
// cuburi2
//
// Created by Andrada Minca on 25.02.2025.
//
#include <fstream>
using namespace std;
ifstream fin("cuburi2.in");
ofstream fout("cuburi2.out");
int n,m,v[250005],p[250005];
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>v[i];
p[i]=v[i];
v[i]+=v[i-1];
}
for(int i=1;i<=m;i++)
{
int a,b;
int val=0;
fin>>a>>b;
int s=v[b]-v[a-1];
s++;
s/=2;
s+=v[a-1];
int st=a,dr=b;
while(st<dr)
{
int mij=(st+dr)/2;
if(v[mij]<s)st=mij+1;
else dr=mij;
if(v[mij+1]>s)break;
}
fout<<dr<<" ";
for(int j=a;j<dr;j++)
{
val+=p[j]*(dr-j);
}
for(int j=dr+1;j<=b;j++)
{
val+=p[j]*(j-dr);
}
fout<<val<<'\n';
}
return 0;
}