Cod sursa(job #1829470)

Utilizator chiricaandrei23Chirica Andrei chiricaandrei23 Data 14 decembrie 2016 23:54:20
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    ifstream f("ssm.in");
    ofstream g("ssm.out");

    int n, i;
    int max_ending_here = 0;
    int max_so_far = 0;
    int max_starting_at = 0;
    int current_max_pos = 0;
    int max_ends_at = 0;
    int v[600000];

    f >> n;
    for(i=1;i<=n;i++)
        f >> v[i];

    for (int a = 0; a < n; a++) {
        int x  = v[a];
        max_ending_here = max(0, max_ending_here + x);
        if (max_so_far > max_ending_here){
            max_starting_at = current_max_pos;
            max_ends_at = a;
        }
        max_so_far = max(max_so_far, max_ending_here);
        if (max_ending_here == 0){
            current_max_pos = a;
        }
    }
    g << max_so_far << ", " << current_max_pos + 1 << ", " << max_ends_at + 1;
    f.close();
    g.close();
    return 0;
}