Cod sursa(job #2909266)

Utilizator ClaudeluCostea Claudiu Claudelu Data 10 iunie 2022 18:24:10
Problema Subsecventa de suma maxima Scor 85
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int N = 0, suma_maxima = 0, inceput_secventa = 0, sfarsit_secventa = 0, x = 0, *A = NULL, i = 0;
    FILE* f = fopen("ssm.in", "r"), * g = fopen("ssm.out", "w");

	fscanf(f, "%d", &N);

	A = (int*)malloc(N * sizeof(int));

	for (i = 0; i < N; i++)
		fscanf(f, "%d", &A[i]);

	x = 0;
	suma_maxima = A[0];

	for (i = 0; i < N; i++)
	{
		if (A[i] > A[i] + x)
			x = A[i];
		else
			x = A[i] + x;

		if (x > suma_maxima)
		{
			suma_maxima = x;
			sfarsit_secventa = i;
		}

	}

	x = 0;
	for (i = sfarsit_secventa; i >= 0; i--)
	{
		x = x + A[i];
		if (x == suma_maxima)
		{
			inceput_secventa = i;
			break;
		}
	}

	fprintf(g, "%d %d %d", suma_maxima, inceput_secventa + 1, sfarsit_secventa + 1);
	fclose(f);
	fclose(g);
	free(A);

	return 0;
}