Cod sursa(job #2024700)

Utilizator eusebiu_gageaGagea Eusebiu-Andrei eusebiu_gagea Data 21 septembrie 2017 00:19:57
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");

#define Nmax 6000000
int n, s[Nmax];
int smax, sum, stmax, drmax, st, i;

void read() {
    f>>n;
    for(int i = 0; i < n; i++)
        f>>s[i];
}

void ssm() {
    for(smax = sum = s[0], stmax = drmax = 0, st = 0, i = 1; i < n; i++) {
        if(sum < 0) {
            sum = s[i];
            st = i;
        } else {
            sum += s[i];
            if(sum > smax)
                smax = sum, stmax = st, drmax = i;
            if(sum == smax)
                if(i - st < drmax - stmax)
                {
                    stmax = st;
                    drmax = i;
                }
        }
    }
}

int main()
{
    read();
    ssm();
    g<<smax<<' '<<stmax + 1<<' '<<drmax + 1<<'\n';
    return 0;
}