Cod sursa(job #2807027)

Utilizator dianadianapSabina Andreea dianadianap Data 23 noiembrie 2021 12:06:26
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 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], pmax = 1;
    for(int i=2;i<=n;i++)
    {
        fin>>a[i];
        if(vmax < a[i])
            vmax = a[i], pmax = i;
    }

     dp[1] = a[1];pi = 1;maxi = dp[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(vmax < 0)
        fout<<vmax<<" "<<pmax<<" "<<pmax;
    else
        fout<<maxi<<" "<<pimax<<" "<<pfmax;
    return 0;
}