Cod sursa(job #2912876)

Utilizator asdfdAlexandru Andrei asdfd Data 11 iulie 2022 14:22:01
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, k, v[6000000], leftt = 1, rightt, length, cnt, act_leftt, act_rightt;
long long int max_sum, act_sum;

int main() {
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");
	fin >> n;
	for (int i = 1; i <= n; ++i) {
        fin >> v[i];
	}
	for (int i = 1; i <= n; ++i) {
        act_sum += v[i];
        ++cnt;
        if (act_sum > max_sum) {
            rightt = i;
            max_sum = act_sum;
            leftt = rightt - cnt + 1;
        }
        if (act_sum == max_sum) {
                act_rightt = i;
                max_sum = act_sum;
            if (act_rightt - leftt + 1 < cnt) {
                rightt = i;
                max_sum = act_sum;
                leftt = rightt - cnt + 1;
            }
        }
        if (act_sum <= 0) {
            act_sum = 0;
            cnt = 0;
        }
	}
	fout << max_sum << ' ' << leftt << ' ' << rightt;
	return 0;
}