Cod sursa(job #1875347)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 10 februarie 2017 23:35:37
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
/*
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;

#define NMAX 100000
int poz[NMAX];

int main() {
	ifstream cin("secvrest.in");
	ofstream cout("secvrest.out");

	int n;
	cin >> n;

	int sum = 0;
	for (int i = 1; i <= n; ++i){
        int x;
        cin >> x;
        sum = (sum + x) % n;

        if (poz[sum]){
            cout << poz[sum] + 1 << ' ' << i << '\n';
            break;
        }
        else{
            poz[sum] = i;
        }
	}

	return 0;
}
*/

#include <iostream>
#include <fstream>

#define INF ((1 << 31) - 1)

using namespace std;

int main()
{
    ifstream cin("ssm.in");
    ofstream cout("ssm.out");

    int n;
    cin >> n;

    int max_sum = -INF;
    int max_start_pos = -1;
    int max_end_pos = -1;

    int start_pos = 1;

    int sum = 0;

    for (int i = 1; i <= n; ++i){
        int x;
        cin >> x;

        sum += x;

        if (sum < 0){
            sum = 0;
            start_pos = i + 1;
        }

        if (sum > max_sum){
            max_sum = sum;
            max_start_pos = start_pos;
            max_end_pos = i;
        }
    }

    cout << max_sum << ' ' << max_start_pos << ' ' << max_end_pos << '\n';

    return 0;
}