Cod sursa(job #2964301)

Utilizator Ruxandra009Ruxandra Vasilescu Ruxandra009 Data 12 ianuarie 2023 19:41:36
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
const int NrMax = 6000005;
const int NR = 2000000005;
pair<int, int> mini[NrMax];
int n, x, sumi[NrMax], Max, p1, p2;
int main()
{
    f >> n;
    mini[0].first = NR;
    for(int i = 1; i <= n; i ++)
    {
        f >> x;
        sumi[i] = sumi[i - 1] + x;
        mini[i].first = min(mini[i - 1].first, sumi[i]);
        if(mini[i - 1].first > sumi[i])
        {
            mini[i].second = i;
        }
        else mini[i].second = mini[i - 1].second;
    }

    for(int i = 1; i <= n; i ++)
    {
        if(Max < sumi[i] - mini[i].first)
        {
            Max = sumi[i] - mini[i].first;
            p1 = mini[i].second + 1;
            p2 = i;
        }
    }

    g << Max << " " << p1 << " " << p2;
    return 0;
}