Cod sursa(job #786998)

Utilizator xulescuStefu Gabriel xulescu Data 12 septembrie 2012 14:52:53
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

using namespace std;

int main(){
    ifstream f("ssm.in");
    int n, s, cur, curst, curend, absmax = 0, absst = 0, absend = 0;
    f >> n;
    f >> cur;
    curst = curend = 1;
    for(int i=1; i<n; i++){
        f >> s;
        if(cur + s < s){
            if(cur > absmax || (cur == absmax && curst < absst) || (cur == absmax && curst == absst && curend-curst < absend-absst)){
                absmax = cur;
                absst = curst;
                absend = curend;
            }
            cur = s;
            curst = curend = i;
        }
        else{
            cur += s;
            curend = i;
        }
    }

    f.close();

    if(cur > absmax || (cur == absmax && curst < absst) || (cur == absmax && curst == absst && curend-curst < absend-absst)){
        absmax = cur;
        absst = curst;
        absend = curend;
    }

    ofstream g("ssm.out");
    g << absmax << " " << absst << " " << absend;
    g.close();

    return 0;
}