Cod sursa(job #2660100)

Utilizator felixiPuscasu Felix felixi Data 18 octombrie 2020 10:48:59
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

ifstream in("ssm.in");
ofstream out("ssm.out");

const int NMAX = 6e6;
const int INF  = (1 << 30);

int nn = 3;

int dp[NMAX + 2];
int rec[NMAX + 2];

int main()
{
    int N;
    in >> N;
    /// initializare
    dp[0] = 0;
    rec[0] = 0;
    /// recurenta
    for (int i = 1; i <= N; ++i) {
        int x;
        in >> x;
        if (x > dp[i - 1] + x) {
            dp[i] = x;
            rec[i] = i;
        }
        else {
            dp[i] = dp[i - 1] + x;
            rec[i] = rec[i - 1];
        }
    }
    /// aflarea raspunsului
    int maxsum = -INF, rlef = -1, rgig = -1;
    for (int i = 1; i <= N; ++i) {
        if (dp[i] > maxsum) {
            maxsum = dp[i];
            rgig = i;
            rlef = rec[i];
        }
    }
    out << maxsum << ' ' << rlef << ' ' << rgig << '\n';
    return 0;
}