Cod sursa(job #1729918)

Utilizator xSliveSergiu xSlive Data 15 iulie 2016 20:16:34
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

int main()
{
    ifstream f("ssm.in");
    ofstream g("ssm.out");
    int n,nr,optim,ii,is;
    int goptim,gii,gis;
    f >> n;
    f >> optim;
    goptim = optim;
    ii = is = gii = gis = 1;
    int indice0prim=-1,indice0ultim=-2;
    for(int i=2;i<=n;i++){
        f >> nr;
        if(optim + nr > nr){
            is ++;
            optim+=nr;
            if(goptim < optim){
                goptim = optim;
                gis = is;
                gii = ii;
            }
            if(nr == 0){
                if(indice0ultim>=indice0prim)
                    indice0ultim++;
                else indice0prim=indice0ultim=i;
            }

        }
        else{
            optim = nr;
            ii = is = i;
            if(indice0ultim +1 >=ii && indice0prim < ii)
                ii=indice0prim;
            else indice0ultim=indice0prim-1;
            if(nr == 0){
                indice0prim=indice0ultim=i;
            }
        }
    }
    g << goptim << " " << gii << " " << gis;
    return 0;
}