Cod sursa(job #3140346)

Utilizator KRISTY06Mateiu Ianis Cristian Vasile KRISTY06 Data 5 iulie 2023 16:40:00
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.63 kb
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;

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

const int MAX_LENGTH = 6000000;

int main() {
    int numLen;
    fin >> numLen;
    int num[MAX_LENGTH + 1], sum[MAX_LENGTH + 1] = {0};
    for (int i = 1; i <= numLen; ++i) {
        fin >> num[i];
        sum[i] = num[i] + sum[i - 1];
    }
    int st = 1, end = 1, maxSum = INT_MIN, maxSt = 1, maxEnd = 1;
    for (int i = 1; i <= numLen; ++i) {
        if (num[i] + sum[i - 1] >= num[i]) {
            sum[i] = num[i] + sum[i - 1];
            end = i;
            if (num[i] + sum[i - 1] > maxSum) {
                maxSum = num[i] + sum[i - 1];
                maxSt = st;
                maxEnd = end;
            }
        } else {
            sum[i] = num[i];
            st = i;
            end = i;
            if (num[i] > maxSum) {
                maxSum = num[i];
                maxSt = st;
                maxEnd = end;
            }
        }
    }
    fout << maxSum << ' ' << maxSt << ' ' << maxEnd;
    return 0;
}
/*
 3
 -100 0 100
 =>
 100 2 3
 
 
 
 
 7
 5 -6 3 4 -2 3 -3
 =>
 8 3 6
 
 2
 3 1
 =>
 4 1 2
 
 5
 3 1 -3 -1 4
 =>
 4 1 2
 
 1
 3
 =>
 3 1 1
 
 3
 -2 -1 -3
 =>
 -1 2 2
 
 3
 -1 -1 -1
 =>
 -1 1 1
 
 5
 1 -2 3 -4 5
 =>
 5 5 5
 
 12
 5 -6 3 4 -2 3 -3 -90 3 4 -2 3
 =>
 8 3 6
 
 4
 2000000000 -1 -2 -3
 =>
 2000000000 1 1
 
 4
 1000000000 -1 -2 1000000000
 =>
 1999999997 1 4
 
 4
 1000000001 1000000001 -1000000001 1000000001
 =>
 2000000002 1 2
 
 1
 0
 =>
 0 1 1
 
 4
 1000000001 1000000001 0 1
 =>
 2000000003 1 4
 
 2
 0 -2000000000
 =>
 0 1 1
 
 5
 0 0 0 0 0
 =>
 0 1 1
 
 3
 -100 0 100
 =>
 100 2 3
 */