Cod sursa(job #1283989)

Utilizator theodor.moroianuTheodor Moroianu theodor.moroianu Data 6 decembrie 2014 10:04:11
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;
struct poz{
    int inceput, sfarsit, suma;
};

int main(){
    poz max, trecut, curent;
    ifstream in("ssm.in");
    ofstream out("ssm.out");
    int n;
    in >> n >> trecut.suma;
    max.suma = trecut.suma;
    max.inceput = trecut.inceput = 1;
    max.sfarsit = trecut.sfarsit = 1;//max = [1,1],
    for (int i = 1; i < n; i++){
        in >> curent.suma;
        if (trecut.suma >= 0){
            trecut.suma+= curent.suma;
            trecut.sfarsit++;
        }
        else{
            trecut.suma = curent.suma;
            trecut.inceput = ++trecut.sfarsit;
        }
        if (max.suma < trecut.suma){
            max.suma = trecut.suma;
            max.inceput = trecut.inceput;
            max.sfarsit = trecut.sfarsit;
        }
    }
    out << max.suma << " " << max.inceput << " " << max.sfarsit;
    in.close();
    out.close();
    return 0;
}