Cod sursa(job #3216568)

Utilizator SilviuC25Silviu Chisalita SilviuC25 Data 18 martie 2024 08:15:14
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>
using namespace std;

const int MAX_SIZE = 1e6 * 6;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int main() {
    int arraySize;
    fin >> arraySize;
    vector<long> arr(arraySize);
    for (int i = 0; i < arraySize; ++i) {
        fin >> arr[i];
    }
    long maxSum = LONG_MIN, firstIndex = 0, secondIndex = 0;
    long partialMaxSum = LONG_MIN;
    int partialFirstIndex = 0, partialSecondIndex = 0;
    for (int i = 0; i < arraySize; ++i) {
        if (arr[i] > partialMaxSum + arr[i]) {
            partialMaxSum = arr[i];
            partialFirstIndex = i;
            partialSecondIndex = i;
        } else {
            partialMaxSum += arr[i];
            ++partialSecondIndex;
        }
        if (maxSum < partialMaxSum
            || (maxSum == partialMaxSum && partialFirstIndex + 1 < firstIndex)
            || (maxSum == partialMaxSum && partialFirstIndex + 1 == firstIndex && partialSecondIndex < secondIndex)) {
            maxSum = partialMaxSum;
            firstIndex = partialFirstIndex + 1;
            secondIndex = partialSecondIndex;
        }
    }
    fout << maxSum << " " << firstIndex << " " << secondIndex;
    return 0;
}