Cod sursa(job #2797446)

Utilizator mariaionescu2006Ionescu Maria mariaionescu2006 Data 9 noiembrie 2021 21:55:44
Problema Subsecventa de suma maxima Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int n,x,a[6000001],m,p,u;
int solve (int a[],int l,int r)
{
    if (l==r) {p=l;u=r;return a[l];}
    int sol=0;
    int mid=(l+r)/2;
    sol=solve(a,l,mid);
    sol=max(sol,solve(a,mid+1,r));
    if (sol<solve(a,mid+1,r)) {sol=solve(a,mid+1,r);p=l;u=r;}
    int maxl=-2147483647;
    int sum=0,i=0;
    for (int st=mid;st>=l;st--)
        {sum=sum+a[st];
         if (sum>maxl) {maxl=sum;i=st;}}
    int maxr=-2147483647;
    sum=0;int j=0;
    for (int dr=mid+1;dr<=r;dr++)
        {sum=sum+a[dr];
         if (sum>maxr) {maxr=sum;j=dr;}}
    if (sol<maxl+maxr) {sol=maxl+maxr;p=i;u=j;}
    return sol;

}
int main()
{
    fin >>n;
    for (int i=1;i<=n;i++)
        {fin >>a[i];}
    int i=1,j=n;
    int sol=solve(a,i,j);
    fout <<sol<<' '<<p<<' '<<u;
    return 0;
}