Cod sursa(job #2132331)

Utilizator fylot3Bogdan Filote fylot3 Data 15 februarie 2018 18:20:43
Problema Subsecventa de suma maxima Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#define MAX_N	6000000

FILE *fin, *fout;

int N;
int v[MAX_N];

int result;
int start;
int end;

void solve_ssm(void) {
	int current_max = v[0];

	result = -MAX_N;
	start = end = 0;

	for (int i = 1; i < N; i++) {
		if (v[i] > current_max + v[i]) {
			current_max = v[i];
			if (current_max > result)
				start = i;
		}
		else {
			current_max += v[i];
		}

		if (current_max > result) {
			result = current_max;
			end = i;
		}
	}
}

void read(void) {
	fin = fopen("ssm.in", "r");
	fscanf(fin, "%d", &N);
	for (int i = 0; i < N; i++) {
		fscanf(fin, "%d", &v[i]);
	}
	fclose(fin);
}

void write(void) {
	fout = fopen("ssm.out", "w");
	fprintf(fout, "%d %d %d", result, start+1, end+1);
	fclose(fout);
}

int main(void) {
	read();
	solve_ssm();
	write();
	return 0;
}