Cod sursa(job #3219855)

Utilizator SilviuC25Silviu Chisalita SilviuC25 Data 1 aprilie 2024 16:51:23
Problema Secventa 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>
using namespace std;

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

int main() {
    int arraySize, sequenceSize;
    fin >> arraySize >> sequenceSize;
    int arr[arraySize + 1], partialSum[arraySize + 1] = {0};
    for (int i = 1; i <= arraySize; ++i) {
        fin >> arr[i];
        partialSum[i] = partialSum[i - 1] + arr[i];
    }
    int maxSum = partialSum[sequenceSize], startIndex = 1, endIndex = sequenceSize;
    int currentSum = partialSum[sequenceSize], currentStart = 1, currentEnd = sequenceSize;
    for (int i = sequenceSize + 1; i <= arraySize; ++i) {
        if (currentSum + arr[i] < partialSum[i] - partialSum[i - sequenceSize]) {
            currentSum = partialSum[i] - partialSum[i - sequenceSize];
            currentStart = i - sequenceSize + 1;
            currentEnd = i;
        } else {
            currentSum += arr[i];
            ++currentEnd;
        }
        if (maxSum <= currentSum) {
            maxSum = currentSum;
            startIndex = currentStart;
            endIndex = currentEnd;
        }
    }
    fout << startIndex << ' ' << endIndex << ' ' << maxSum;
}