Cod sursa(job #2522252)

Utilizator JackstiloAdascalitei Alexandru Jackstilo Data 12 ianuarie 2020 11:04:17
Problema Subsecventa de suma maxima Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");

int N, v[6000001], partiale[6000001], i2, j2, suma1, suma2;
int main() {
    fin >> N;
    for (int i = 1; i <= N; ++i)
        fin >> v[i];
    for (int i = 1; i <= N; ++i)
        suma1 += v[i];
    partiale[1] = v[1];
    for (int i = 2; i <= N; ++i)
        partiale[i] = v[i] + partiale[i-1];
    int maxim = -2147483640, minim = 2147483640;
    for (int i = 1; i <= N; ++i) {
        if (partiale[i] > maxim) {
            maxim = partiale[i];
            i2 = i;
        }
        if (partiale[i] < minim) {
            minim = partiale[i];
            j2 = i;
        }
     }
    if (v[j2] < 0)
        ++j2;
    for (int j = j2; j <= i2; ++j)
        suma2 += v[j];
    if (suma2 > suma1)
        fout << suma2 << " " << j2 << " " << i2;
    else
        fout << suma1 << " " << 1 << " " << N;
    return 0;
}