Cod sursa(job #2909351)

Utilizator crisan_007Crisan Cristian crisan_007 Data 13 iunie 2022 01:03:29
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <iostream>
#include <climits>
#include <algorithm>

#define NR_OF_ELEMENTS 6000005

using namespace std;

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

void Read(int &n, int a[])
{
    int i;
    fin >> n;
    for(i = 0; i < n; ++ i)
        fin >> a[i];
}

void Solve(int n, int a[])
{
    int sum, imax, jmax, smax = INT_MIN, y = 0, i;
    sum = a[0];
    for(i = 1; i < n; ++ i)
    {
        if(a[i] > sum + a[i])
        {
            sum = a[i]; //incepe o noua suma
            y = i;
        }
        else
            sum += a[i]; //se adauga in suma curenta
        if(sum > smax) //verificare suma mai mare
        {
            smax = sum;
            imax = y;
            jmax = i;
        }
    }
    fout << smax << ' ' << imax + 1 << ' ' << jmax + 1 << '\n';
}

int main()
{
    int n, a[NR_OF_ELEMENTS];
    Read(n, a);
    Solve(n, a);
    return 0;
}