Cod sursa(job #2913577)

Utilizator alexandru_ioan.06Alexandru Ioan alexandru_ioan.06 Data 15 iulie 2022 11:36:24
Problema SequenceQuery Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream cin ("sequencequery.in");
ofstream cout ("sequencequery.out");
int v[100001],n,q;
int die(int l,int r)
{
    if(l==r) return v[l];
    long long sumL=0,bestL=-2e9;
    for(int i=(l+r)/2;i>=l;--i)
        bestL=max(bestL,sumL+=v[i]);
    long long sumR=0,bestR=-2e9;
    for(int i=(l+r)/2+1;i<=r;++i)
        bestR=max(bestR,sumR+=v[i]);
    long long r1=die(l,(l+r)/2);
    long long r2=die((l+r)/2+1,r);
    if(bestL+bestR>r1 && bestL+bestR>r2) return bestL+bestR;
    else
    {
        if(r1>r2) return r1;
        return r2;
    }
}
int main()
{
    cin>>n>>q;
    for(int i=1; i<=n; i++) cin>>v[i];
    while(q--)
    {
        int p1,p2;
        cin>>p1>>p2;
        cout<<die(p1,p2)<<'\n';
    }
}