Cod sursa(job #2137216)

Utilizator andreigeorge08Sandu Ciorba andreigeorge08 Data 20 februarie 2018 17:48:55
Problema Subsecventa de suma maxima Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
struct tr{
    int value, pozi, pozf;
}dp[6000005];

int n;
void Citire()
{
    int x;
    fin >> n;
    fin >> x;
    dp[1].value= x;
    dp[1].pozi = 1;
    dp[1].pozf = 1;

    for(int i = 2; i <= n; i++)
    {
        fin >> x;
        if(dp[i - 1].value + x > x)
        {
            dp[i].value = dp[i - 1].value + x;
            dp[i].pozi = dp[i - 1].pozi;
            dp[i].pozf = i;
        }
        else
        {
            dp[i].value = x;
            dp[i].pozi = i;
            dp[i].pozf = i;
        }
    }
    int maxim = -1, poz = -1;
    for(int i = 1; i <= n; i++)
    {
        if(maxim < dp[i].value)
        {
            maxim = dp[i].value;
            poz = i;
        }
        cout << dp[i].value << " ";
    }
    fout << dp[poz].value << " " << dp[poz].pozi << " " << dp[poz].pozf << "\n";
}
int main()
{
    Citire();
    return 0;
}