Cod sursa(job #1363036)

Utilizator alexandru94hahahalera alexandru94 Data 26 februarie 2015 17:52:40
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;

int N, s[6000000], aux[6000000], _min[6000000];
ifstream in("ssm.in");
ofstream out("ssm.out");

int main()
{
	int i, min = int(2e9), poz_min = 0, max = -min, poz_max = 0; 
	in >> N;
	for(i = 1; i <= N; i++)
	{
		in >> s[i];
	}

	/* magic here*/
	aux[1] = s[1];
	_min[1] = s[1];
	for(i = 2; i <= N; i++)
	{
			
		aux[i] = aux[i - 1] + s[i];
		if(max < aux[i]) {
			max = aux[i];
			poz_max = i;
		}	
	
		if(min > aux[i]) {
			min = aux[i];
			poz_min = i;
		}
		_min[i] = poz_min;
		
		cout<<i<<" -> aux[i] = "<<aux[i]<<" _min[i] = "<<_min[i]<<"      ====     min = "<<min<<" poz_min = "<<poz_min<<" poz_max = "<< poz_max <<"\n";
	}
	
	
	cout<<aux[poz_max] - aux[_min[poz_max]]<<" "<<_min[poz_max] + 1 <<" "<<poz_max<<"\n";

	return 0;
}