Cod sursa(job #2758846)

Utilizator lahayonTester lahayon Data 13 iunie 2021 16:38:14
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstdlib>


using namespace std;


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

    int N;
    cin >> N;

    int smin = INT32_MAX, smax = INT32_MIN, x, sum = 0, left, right, pmin;

    for(int i = 1;i <= N; ++i){
        cin >> x;

        sum += x;
        if(sum < smin){
            smin = sum;
            pmin = i;
        }
        if(x > smax){
            smax = x;
            left = right = i;
        }
        else if(x == smax && right - left + 1 > 1){
            right = left = i;
        }
        if(sum - smin > smax){
            smax = sum - smin;
            right = i;
            left = pmin + 1;
        }
        else if(sum - smin == smax && right - left + 1 > i - pmin){
            right = i;
            left = pmin + 1;
        }
    }

    cout << smax << " " << left << " " << right;
    
    cin.close();
    cout.close();

    return 0;
}