Cod sursa(job #505303)

Utilizator newbieFMI - Cristina Andrei newbie Data 1 decembrie 2010 16:57:32
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

#define MAX -1000000
#define nmax 6000010

int b[nmax], a[nmax];

using namespace std;

int main() {
    ifstream f("ssm.in");
    ofstream g("ssm.out");
    
    int n, i, max = MAX, pozMax, pozSecv;
    f >> n;
    
    for ( i = 1; i <= n; i++ ) {
        f >> a[i];
        
        if ( i == 1 ) 
            b[i] = a[i];
        else 
            if ( b[i-1] + a[i] > a[i] ) 
                b[i] = b[i-1] + a[i];
            else 
                b[i] = a[i];
                
        if ( b[i] > max ) {
            max = b[i]; 
            pozMax = i;
        }
    }
    
    for ( i = pozMax; i > 0; i-- )
        if ( b[i] - a[i] != b[i-1] ) // b[i] - a[i] == 0
            { pozSecv = i; break; }
    
    /* for ( i = 1; i <= n; i++ )
        g << b[i] << " ";
    g << '\n'; */

    g << max << " " << pozSecv << " " << pozMax;
    
    return 0;
}