Cod sursa(job #2683390)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 11 decembrie 2020 09:48:11
Problema Subsecventa de suma maxima Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int sp[6000005];
pair<int,int> minsp[6000005];
int main()
{
    int n, k;
    fin>>n;
    minsp[0].first=2000000000;
    for (int i=1; i<=n; i++) {
        fin>>k;
        sp[i]=sp[i-1]+k;
        if (sp[i]<minsp[i-1].first) {
            minsp[i].first=sp[i];
            minsp[i].second=i;
        }
        else {
            minsp[i].first=minsp[i-1].first;
            minsp[i].second=minsp[i-1].second;
        }
    }
    int st, dr, smax=0;
    for (int i=2; i<=n; i++) {
        if (sp[i]-minsp[i].first>smax) {
            st=minsp[i].second;
            dr=i;
            smax=sp[i]-minsp[i].first;
        }
    }
    fout<<smax<<" "<<st+1<<" "<<dr;
    return 0;
}