Cod sursa(job #290531)

Utilizator snaked31Stanica Andrei snaked31 Data 28 martie 2009 01:15:30
Problema Subsecventa de suma maxima Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int n, i, s, sol, p1, p1i, p2;
int x;

void read()

{
	//scanf("%d ", &n);
    cin >> n;
}


void solve()

{
   	s = 0;
    p1 = 1;
    sol = -0x3f3f3f3f;
    
	for (i=1; i<=n; ++i)
    {
    	//scanf("%d ", &x);
        cin >> x;
        if (s < 0)
        {
        	s = x;
            p1 = i;
        }
        else
        	s+=x;
        if (s > sol)
        {
        	sol = s;
            p2 = i;
            p1i = p1;
        }
        else
        if (s == sol && (i-p1) < (p2-p1i))
        {
        	p2 = i;
            p1i = p1;
        }

    }
}


void write()

{
    //printf("%d %d %d\n", sol, p1i, p2);
    cout << sol << " " << p1i << " " << p2;
}


int main()

{

    freopen("ssm.in", "r", stdin);
	freopen("ssm.out","w",stdout);

    read();
    solve();
    write();

    return 0;
}