Cod sursa(job #2660098)

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

using namespace std;

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

const int NMAX = 1e5;
const int INF  = (1 << 30);

int nn = 3;

int v[NMAX + 2];
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) {
        in >> v[i];
        if (v[i] > dp[i - 1] + v[i]) {
            dp[i] = v[i];
            rec[i] = i;
        }
        else {
            dp[i] = dp[i - 1] + v[i];
            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;
}