Cod sursa(job #260961)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 17 februarie 2009 19:35:27
Problema Subsecventa de suma maxima Scor Ascuns
Compilator cpp Status done
Runda Marime 0.75 kb
#include <stdio.h>
#include <assert.h>

#define MAXV 2147483647

int N;
int Sol, p1, p2;

int main()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    
    int i, X, Smin, S, last = 0;
    
    S = Smin = 0;
    
    assert( scanf("%d ", &N) == 1);
    
    assert(1 <= N && N <= 7000000);
    
    for (i = 1; i <= N; i++)
    {
        assert( scanf("%d ", &X) == 1);
        
        S += X;
        
        if (S < Smin) Smin = S, last = i;
        
        if (S - Smin > Sol) 
        {
            Sol = S - Smin;
            p1 = last + 1;
            p2 = i;
        }
    }
    
    assert(-MAXV <= Sol && Sol <= MAXV);
    
    printf("%d %d %d\n", Sol, p1, p2);
    
    return 0;
}