Cod sursa(job #2807016)

Utilizator dianadianapSabina Andreea dianadianap Data 23 noiembrie 2021 11:57:23
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#define in "ssm.in"
#define out "ssm.out"

using namespace std;

int a[6000005], n, dp[6000005], pi, maxi, pimax, pfmax;

ifstream fin(in);
ofstream fout(out);
int vmax, pmax;

int main()
{
    fin>>n;
    fin>>a[1];
    vmax = a[1];
    for(int i=1;i<=n;i++)
        fin>>a[i], vmax = max(vmax, a[i]), pmax = i;
     dp[1] = a[1];
     pi = 1;
     for(int i=2;i<=n;i++)
     {
         if(dp[i-1] + a[i]>a[i])
             dp[i] = dp[i-1] + a[i];
         else
              dp[i] = a[i], pi = i;
          if(maxi < dp[i])
              maxi = dp[i], pfmax = i, pimax = pi;

    }
    if(pfmax == 0)
        fout<<vmax<<" "<<pmax<<" "<<pmax;
    else
        fout<<maxi<<" "<<pimax<<" "<<pfmax;
    return 0;
}