Cod sursa(job #1480677)

Utilizator tudorcomanTudor Coman tudorcoman Data 2 septembrie 2015 23:51:33
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb

#include <stdio.h>
 
const int maxN = 50000;
int v[maxN];
 
int main() {
    freopen("secv2.in", "r", stdin);
    freopen("secv2.out", "w", stdout);
    int N, K, S, L, R, St, Dr, Smax, Si = 0;
 
    scanf("%d%d", &N, &K);
    for(register int i = 0; i < N; ++ i)
        scanf("%d", &v[i]), Si += v[i];
 
    S = Smax = v[0];
    St = 0;

    if(K == N)
    	printf("%d %d %d\n", 1, N, Si);
    else {

    	for(register int i = 1; i < N; ++ i) {
	        if(S + v[i] > v[i])
	            S += v[i], Dr = i;
	        else
	            S = v[i], St = Dr = i;
	 
	        if(S > Smax and (Dr - St + 1) >= K)
	            Smax = S, L = St, R = Dr;
    	}
 
	    if(S > Smax and (Dr - St + 1) >= K)
	        Smax = S, L = St, R = Dr;
	 
	    printf("%d %d %d\n", ++ L, ++ R, Smax);
    }

    return 0;
}