Cod sursa(job #3187809)

Utilizator Gergo123Schradi Gergo Gergo123 Data 30 decembrie 2023 15:18:21
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.46 kb
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;

int n;
int v[6000005];

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

//A megoldas valtozo az egy olyan valtozo amely megjeloli a reszsorozatok osszegeit.
//A kezdet valtozo az adott poziciot jeloli.A kezdetmax es veglegesmax valtozok
//megjelolik a maximalis reszsorozat legelso es legutolso poziciojat.(vaggyoi
// a maximalis reszsorozat honnan indul es honnan zarul be).A fuggveny vigigjarja
// a v tombbot es megkeresi a feladat kert elemeit(es ki is iratja azokat).Ha a
//megoldas negativ akkor felveszi a tomb i edik elemet illetve a kezdet megkapja
//a i edik poziciot,kullonben a megoldashoz hozzaadja a tomb i edik elemet.
//Amennyiben a maximum kissebb mint a megoldas, akkor a max felvesszi a megoldast
//es a kezdetmax es veglegesmax sorra felvesszi az i edik poziciot es a kezdet
// valtozo poziciojat

void f(int n,int v[]){
    int megoldas=-99999999,kezdet=0,max=INT_MIN,veglegesmax=kezdet,kezdetmax=kezdet;
    for (int i=1;i<=n;i++) {
        if (megoldas< 0) {
            megoldas=v[i];
            kezdet=i;
        }
        else megoldas+=v[i];
        if (max<megoldas) {
            max=megoldas;
            veglegesmax=i;
            kezdetmax=kezdet;
        }
    }
    fout<<max<<" "<<kezdetmax<<" "<<veglegesmax;
}

int main() {
    fin>>n;
    for (int i = 1; i <= n; i++) {
        fin>>v[i];
    }
    f(n,v);
    return 0;
}