Cod sursa(job #2910096)

Utilizator radu.seitanSeitan Radu-Catalin radu.seitan Data 18 iunie 2022 14:48:07
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
//Problema ssm - Rezolvare C++: 100p -> infoarena.ro
//Stud. Cristian CRIȘAN - AC, CTI-RO, ANUL I

#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;
}