Rezultati

Up. imeNalogaJezikRezultatČas oddaje
pridnerozice-2017 Ribiči Java 0/100Prekoračen čas (TLE) 11. maj '17 @ 18:11

Test Točke Porabljen spomin Porabljen čas Status
#1 3/3 36,602 MiB 0,000 s OK
#2 0/3 80,070 MiB 10,837 s Prekoračen čas
#3 0/3 84,449 MiB 10,816 s Prekoračen čas
#4 3/3 83,230 MiB 1,346 s OK
#5 4/4 85,965 MiB 1,345 s OK
#6 4/4 80,441 MiB 1,365 s OK
#7 4/4 79,500 MiB 1,253 s OK
#8 4/4 85,570 MiB 1,123 s OK
#9 0/4 103,211 MiB 10,788 s Prekoračen čas
#10 0/4 9,320 MiB 10,737 s Prekoračen čas
#11 0/4 99,668 MiB 10,938 s Prekoračen čas
#12 4/4 88,684 MiB 4,781 s OK
#13 4/4 84,238 MiB 1,459 s OK
#14 4/4 93,063 MiB 1,305 s OK
#15 0/4 95,590 MiB 10,809 s Prekoračen čas
#16 0/4 116,656 MiB 10,799 s Prekoračen čas
#17 0/4 112,023 MiB 10,782 s Prekoračen čas
#18 4/4 40,102 MiB 0,000 s OK
#19 0/4 9,410 MiB 10,829 s Prekoračen čas
#20 0/4 75,902 MiB 10,777 s Prekoračen čas
#21 4/4 38,313 MiB 0,000 s OK
#22 0/4 90,805 MiB 10,885 s Prekoračen čas
#23 0/4 99,742 MiB 10,775 s Prekoračen čas
#24 0/4 9,324 MiB 10,792 s Prekoračen čas
#25 0/4 78,043 MiB 10,787 s Prekoračen čas
#26 0/4 88,020 MiB 10,845 s Prekoračen čas

Ocenjevani program (Ribici.java):
import java.util.*;

public class Ribici{

	static int max = 0;

	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int d = sc.nextInt();
		int k = sc.nextInt();
		int[] ribe = new int[n];
		for(int i = 0; i < n; i++)
			ribe[i] = sc.nextInt();
		if(k*d >= n){
			int vsota = 0;
			for(int l = 0; l < n; l++)
				vsota+= ribe[l];
			System.out.println(vsota);		
		}
		else{
			rekurzija(ribe, k, d, 0);
			System.out.println(max);
		}
	}
	
	public static void rekurzija(int[] r, int k, int d, int sum){
		int vsota = sum;
		if(k == 0) return;
		if(r.length <= d){
			for(int i = 0; i < r.length;i++)
				vsota += r[i];
			if(vsota > max)
				max = vsota;
		}
		else{
			for(int i = 0; i < r.length - k*d + 1; i++){
				for(int j = 0; j < d; j++)
					vsota += r[i+j];
				if( k > 1){
					int[] t = new int [r.length - i - d];
					for(int l = 0; l < t.length; l++)
						t[l] = r[i+d+l];
					rekurzija(t, k -1, d, vsota);
				} else{
					if(vsota > max)
						max = vsota;
				}
				vsota = sum;
			}
		}
	} 




}