Cod sursa(job #1065032)

Utilizator BonCipBonciocat Ciprian Mircea BonCip Data 22 decembrie 2013 17:43:54
Problema Subsecventa de suma maxima Scor 95
Compilator c Status done
Runda Arhiva educationala Marime 1.07 kb
#include <stdio.h>
#include <limits.h>

int max( int a ) {
    return a > 0 ? a : 0;
}

int main( ) {
    FILE * fin, * fout;
    fin = fopen( "ssm.in", "r" );
    fout = fopen( "ssm.out", "w" );

    int N;
    fscanf( fin ,"%d", &N );
    
    int maxbest = INT_MIN, minst = INT_MAX, mindr = INT_MAX;
    int best = 0, st = 1, dr = 1;
    int i;
    for( i = 1; i <= N; i ++ ) {
        int read;
        fscanf( fin, "%d", &read );
        
        if( best <= 0 ) {
            best = read;
            st = i;
            dr = i;
        } else {
            best += read;
            dr ++;
        }

        if( best > maxbest ) {
            maxbest = best;
            minst = st;
            mindr = dr;
        } else if( best == maxbest ) {
            if( st < minst ) {
                minst = st;
                mindr = dr;
            } else if( st == minst ) {
                if( dr < mindr ) {
                    mindr = dr;
                }
            }
        }

    }

    fprintf( fout, "%d %d %d", maxbest, minst, mindr );

    fclose( fin );
    fclose( fout );
}