Cod sursa(job #2438507)

Utilizator red_devil99Mancunian Red red_devil99 Data 12 iulie 2019 17:12:43
Problema Subsecventa de suma maxima Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
#define maxn 100000
#define inf 1 << 30
int suma_max(int a[maxn], int n, int &inceput, int &final){
	int sum[maxn], best[maxn];
	sum[0] = 0;
	for(int i = 1; i <= n; i++){
		sum[i] = a[i] + sum[i-1];
	}

	int inceput_temp = 1;
	int min = sum[0];
	int bestsum = -inf;
	for(int i = 1; i <= n; i++){
		best[i] = sum[i] - min;
		if(min > sum[i]){
			min = sum[i];
			inceput_temp = i + 1;
		}
		if(bestsum < best[i]){
		     bestsum = best[i];
		     inceput = inceput_temp;
		     final = i;
		}

	}
	return bestsum;
}

int main(){

	ifstream fin("ssm.in");
	ofstream fout("ssm.out");
	int a[maxn], n, inceput, final;
	int bestsum;
	fin >> n;
	for(int i = 1; i <= n; i++){
		fin >> a[i];
	}
	bestsum = suma_max(a, n, inceput, final);
	fout <<bestsum<<" "<<inceput<<" "<<final<<'\n';
	return 0;
}