Cod sursa(job #48234)

Utilizator bvaliValentin Bora bvali Data 4 aprilie 2007 15:14:23
Problema Secventa 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>

FILE *fout = fopen("secv2.out", "w");
short n, k, a[50001];
long sum[50001];
void tip(){
    for(short i=1; i<=n; i++)
	fprintf(fout, "%li ", sum[i]);
}
void solve(){
    long max=-1250000000;
    short i, pozmax=0, start, end;
    FILE *fin = fopen("secv2.in", "r");
    fscanf(fin, "%hi %hi", &n, &k);
    for(i=1; i<=n; i++){
	fscanf(fin, "%hi", &a[i]);
	if(i == 1)
	    sum[i] = a[i];
	else
	    sum[i] = sum[i-1]+a[i];
	if(sum[i] > max){
	    max = sum[i];
	    pozmax = i;
	}
    }
    end = pozmax;
    start = pozmax-k;
//    tip();
    for(i=pozmax-k-1; i>=1; i--)
	if(sum[end]-sum[i] > sum[end]-sum[start])
	    start = i;
    if(k == n)
	fprintf(fout, "%hi %hi %li", 1, n, sum[n]);
    else
	fprintf(fout, "%hi %hi %li", start+1, end, sum[end]-sum[start]);
    fclose(fin);
}

int main(){
    solve();
    fclose(fout);
    return 0;
}