Cod sursa(job #497686)

Utilizator nimeniaPaul Grigoras nimenia Data 3 noiembrie 2010 02:39:20
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

int main(){
    
    ifstream f("ssm.in");
    ofstream g("ssm.out");
    
    long n;
    
    f >> n;
    
    long long sum;
    f >> sum;
    long len = 1;
    long startPos = 1;
    
    long long localSum  = sum;
    long localLen = len;
    long localStartPos = startPos;
    long x;
    
    if ( localSum < 0) {localSum = 0; localStartPos = 2; localLen = 0;}
    
    for (long i=2;i<=n;i++){
        f >> x;
        localSum+=x;
        localLen++;
        if ( localSum > sum ){
             sum = localSum;
             len = localLen;
             startPos = localStartPos;
        }
        
        if ( localSum < 0){
           localSum = 0;
           localStartPos = i + 1;
           localLen = 0;
        }
           
    }
    
    g << sum << " " << startPos << " " << startPos + len - 1 << endl;
    
    f.close();
    g.close();

    return 0;

}