Cod sursa(job #903715)

Utilizator Gaby_mMititelu Gabriel Gaby_m Data 2 martie 2013 17:44:47
Problema Subsecventa de suma maxima Scor 75
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<algorithm>
const int NMAX = 6000001;
using namespace std;
int N;
int values[NMAX];
ifstream fin("ssm.in");
ofstream fout("ssm.out");
 
void solve() {  
    int start,end, auxStart;
    int sumFwd = -int(2e9);
	int pozFwd = -1;
	int pozBkwd = -1;
	int sumBkwd = -int(2e9);
    int auxSum = 0;
    fin>>N;
    int i;  
    for (i = 0; i < N; i++) {
        fin>>values[i];
		auxSum += values[i];
        if (auxSum > sumFwd){ 
            sumFwd = auxSum;
			pozFwd = i;
        }        
    }	
	auxSum = 0;
	for (i = N -1; i >= 0; i--) {        
		auxSum += values[i];
        if (auxSum > sumBkwd){ 
            sumBkwd = auxSum;
			pozBkwd = i;
        }        
    }
	
	if (pozFwd > pozBkwd) {
		start = pozBkwd;
		end = pozFwd;
	}
	else  {
		start = pozFwd;
		end = pozBkwd;
	}
	
	auxSum = 0;
	for (i = start; i <= end; i++) {
		auxSum += values[i];
	}	
    fout<<auxSum<<" "<<start+1<<" "<<end+1<<"\n";       
}
 
int main(){ 
    solve();    
    return 0;
}