Cod sursa(job #1184883)

Utilizator Bluedrop_demonPandia Gheorghe Bluedrop_demon Data 14 mai 2014 13:17:25
Problema Secventa 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
// Problema secv2
 
#include <stdio.h>
#define MAX       50001
 
long S[MAX];
 
int main()
{
    long n, k, i;
    int x;
    FILE *f, *g;
    
    f = fopen( "secv2.in", "rt" );
	
	fscanf( f, "%ld %ld", &n, &k );

	S[0] = 0;	
	for( i=1; i<=n; i++ ) { 
		fscanf( f, "%d", &x ); 
		S[i] = S[i-1] + x;
	}
    fclose( f );
    
    long max = -MAX;
    long p, u, sum, sum1, sum2, start, finish;
	
    // Prima secventa
	start = 1;
	finish = k;
	max = S[k];
    sum = max;
    
    for( i=k+1; i<=n; i++ ) {
		sum1 = S[i] - S[i-k];
		sum2 = sum + S[i] - S[i-1];
		
		if( sum1 > sum2 ) {
			p = i-k+1;
			u = i;
			sum = sum1;
		}
		else {
			sum = sum2;
			u = i;
		}
		
		if( sum > max ) {
			max = sum;
			start = p;
			finish = u;
		}
	}
	
    g = fopen( "secv2.out", "wt" );
        fprintf( g, "%ld %ld %ld\n", start, finish, max );
    fclose( g );
    return 0;
}