Cod sursa(job #1890891)

Utilizator Razvanel6991Razvan Lazar Razvanel6991 Data 23 februarie 2017 16:14:46
Problema Subsecventa de suma maxima Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>


void readArray(int *v, int N, FILE *in){
	for(int i = 0; i < N; i++){
		fscanf(in, "%d", v + i);
	}
}

void printArray(int *v, int N){
	for(int i = 0; i < N; i++){
		printf("%d   ", v[i]);
	}
	printf("\n");
}

void MaxSumSeq(int *v, int N, FILE *out){
	//printf("Am ajuns aici");
		int finalSum = INT_MIN, tempSum  = 0, start = 0, finish = 0;
		/* finalSum = suma finala
		 * tempSum = suma pana la fiecare element din vector
		 */
		for(int i = 0; i < N; i++){
			tempSum += v[i];
			
			if(finalSum < tempSum){
				finish = i;
				finalSum = tempSum;
			}
			if(tempSum < 0){
				start = i;
				tempSum = 0;
			}
		}
		
		for(int i = start + 1; i < finish + 1; i++){
			fprintf(out, "%d ", v[i]);
		}
	}

int main(){
	FILE *in, *out;
	int N, v[ 30000 ];

	in = fopen("ssm.in", "r");
	out = fopen("ssm.out", "w");


	fscanf(in, "%d", &N);
	readArray(v, N, in);
	//printArray(v, N);			
	MaxSumSeq(v, N, out);

	fclose(in);
	fclose(out);
	return 0;
}