Cod sursa(job #3151549)

Utilizator asdfdAlexandru Andrei asdfd Data 21 septembrie 2023 19:19:40
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <cstdint>
using namespace std;


int main() {
	ifstream fin("ssm.in");
	ofstream fout("ssm.out");
	int n;
	fin >> n;

	int firstNr;
	fin >> firstNr;

	int maxBest = firstNr;
	int st = 1, dr = 1, prevBest = firstNr;
	int prevBestSt = 1;

	for (int i = 2; i <= n; ++i) {
		int nr;
		fin >> nr;
		int best, bestSt;
		if (nr + prevBest < nr) {
			best = nr;
			bestSt = i;
		} else {
			best = nr + prevBest;
			bestSt = prevBestSt;
		}
		
		if (best > maxBest) {
			maxBest = best;
			dr = i;
			st = bestSt;
		} else if (best == maxBest && bestSt < st) {
			st = bestSt;
			dr = i;
		}
		prevBest = best;
		prevBestSt = bestSt;

	}
	
	fout << maxBest << ' ' << st << ' ' << dr << "\n";

	return 0;
}