Cod sursa(job #2052969)

Utilizator enedumitruene dumitru enedumitru Data 31 octombrie 2017 11:34:47
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
/** S       - suma subsecventei curente;
    st      - pozitia primului element din subsecventa curenta S;
    dr      - pozitia ultimului element din subsecventa curenta S;
    Sm      - suma subsecventei maximale (initial fiind -2000000002);
    stm     - pozitia primului element din subsecventa maximala Sm;
    drm     - pozitia ultimului element din subsecventa maximala Sm;
    maxneg  - cel mai mare element negativ daca exista;
    p       - pozitia lui maxneg;
    c       - numara elementele pozitive;
*/
#include <fstream>
using namespace std;
ifstream f("ssm.in"); ofstream g("ssm.out");
int main()
{   int n;
    f>>n;
    int c=0,p,maxneg=-2000000000,S=0,st=1,dr,Sm=0,stm,drm;
    for(dr=1;dr<=n;dr++)
    {   int v;
        f>>v;
        if(v>=0) c++;
        if(v<0 && v>maxneg) {maxneg=v; p=dr;}
        S+=v;
        if(S<0) {st=dr+1; S=0;}
        else
        {
            if(S>Sm){Sm=S; stm=st; drm=dr;} ///Criteriul maximalitatii.
        }
    }
    if(c==0) g<<maxneg<<" "<<p<<" "<<p; else g<<Sm<<" "<<stm<<" "<<drm;
    g.close(); return 0;
}