Cod sursa(job #643336)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 3 decembrie 2011 14:40:23
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<cstdio>
#define Check() if (++poz == 8192) {fread(buff, 1, 8192, stdin); poz = 0;}
	
using namespace std;

char buff[8192];
int poz;

void Read(int &nr){
	nr = 0; 
	bool neg = false;
	while (buff[poz] != '-' && (buff[poz] < '0' || buff[poz] > '9')) 
		Check();
	
	if (buff[poz] == '-') {
		neg = true;
		Check();
	}
	while (buff[poz] >= '0' && buff[poz] <= '9'){
		nr = nr * 10 + (buff[poz] - '0');
		Check();
	}
	if (neg) nr *= -1;
}

int main(){
	int n, i, nr, nrPrec, sum, min, max, ind, inds, indi;
	
	freopen ("ssm.in", "r", stdin), freopen("ssm.out", "w", stdout);
	Read(n); Read(nr);
	
	for (i = 1, min = 1<<30, max = -min; i < n; i++){
		nrPrec = nr;
		Read(nr);
		nr += nrPrec;
		if (min > nrPrec) min = nrPrec, ind = i+1;
		sum = nr - min;
		if (max < sum) max = sum, inds = i+1, indi = ind;
	}
	
	printf("%d %d %d\n", max, indi, inds);
	return 0;
}