Cod sursa(job #1382334)

Utilizator tudoras8tudoras8 tudoras8 Data 8 martie 2015 20:42:04
Problema Subsecventa de suma maxima Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <limits>

using namespace std;

int main()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    cin.sync_with_stdio(false);
    int n, s[599999], sum[599999];
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> s[i];
        if (i == 0)
            sum[0] = s[0];
        else {
            sum[i] = sum[i - 1] + s[i];
        }
    }
    int maxsum = numeric_limits<int>::min(), mi = 0, mj = 0, x;
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            x = sum[j];
            if (i > 0) x -= sum[i - 1];
            if (x == maxsum) {
                if (i < mi) {
                    mi = i;
                    mj = j;
                } else if (i == mi) {
                    if (j - i < mj - mi) {
                        mi = i;
                        mj = j;
                    }
                }
            } else if (x > maxsum) {
                maxsum = x;
                mi = i;
                mj = j;
            }
        }
    }
    cout << maxsum << ' ' << mi + 1 <<  ' ' << mj + 1;
    return 0;
}