Cod sursa(job #2063967)

Utilizator Alex18maiAlex Enache Alex18mai Data 11 noiembrie 2017 17:35:40
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
//#include <iostream>

using namespace std;

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

int nr[6000100];

int main() {

    /*freopen("input" , "r" , stdin);
    freopen("output" , "w" , stdout);*/

    int n;
    cin>>n;

    for (int i=1; i<=n; i++){
        cin>>nr[i];
    }

    long long last = 0;
    long long last_neg = 0;
    long long MAX = -2e18;
    int pos_st = 1, pos_dr = 1 , last_pos = 0;

    for (int i=1; i<=n; i++){
        last += 1LL * nr[i];
        if (MAX < last - last_neg){
            MAX = last - last_neg;
            pos_dr = i;
            pos_st = last_pos + 1;
        }
        if (last_neg > last){
            last_neg = last;
            last_pos = i;
        }
    }

    cout<<MAX<<" "<<pos_st<<" "<<pos_dr;

    return 0;
}