Rezultati

Up. imeNalogaJezikRezultatČas oddaje
abr Jungle Speed Java 0/100Prekoračen čas (TLE) 11. maj '17 @ 20:23

Test Točke Porabljen spomin Porabljen čas Status
#1 9/9 34,789 MiB 0,000 s OK
#2 0/9 78,117 MiB 3,216 s Prekoračen čas
#3 0/9 36,961 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​3
<<<EOF>>>
Pravilen izhod:
​2
<<<EOF>>>
#4 0/9 36,715 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​3
<<<EOF>>>
Pravilen izhod:
​4
<<<EOF>>>
#5 0/9 34,996 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​5
<<<EOF>>>
Pravilen izhod:
​6
<<<EOF>>>
#6 0/9 36,898 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​5
<<<EOF>>>
Pravilen izhod:
​1
<<<EOF>>>
#7 0/9 34,125 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​5
<<<EOF>>>
Pravilen izhod:
​8
<<<EOF>>>
#8 0/9 34,625 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​5
<<<EOF>>>
Pravilen izhod:
​4
<<<EOF>>>
#9 9/9 31,008 MiB 0,000 s OK
#10 0/9 34,164 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​5
<<<EOF>>>
Pravilen izhod:
​3
<<<EOF>>>
#11 0/10 30,961 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​5
<<<EOF>>>
Pravilen izhod:
​1
<<<EOF>>>

Ocenjevani program (JungleSpeed.java):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class JungleSpeed {

	public static void main(String[] args) throws Exception {
		BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
		String [] nn = read.readLine().split(" ");
		int n=Integer.parseInt(nn[0]);
		
		String [] array = read.readLine().split(" ");
		
		Player[] player = new Player[n];
		
		for (int i = 0; i < n; i++) {
			player[i] = new Player();
		}
		
		for(int i = 0; i < array.length; i++){
			player[i%4].AddToHand(Integer.parseInt(array[i]));
		}
		int i = 0;
		while(true){
			if(player[i].hand.size() == 0 && player[i].table.size() == 0){
				break;
			} else if(player[i].hand.size() == 0){
				player[i].PickTable();
			}
			
			player[i].PlayCard();
			int p = check(player, i);
			if(p != -1){
				player[i].MergeFromTable(player[i].table, player[p].table);
				player[p].EmptyTable();
				player[i].EmptyTable();
				i--;
			}
			
			i++;
			if(i == n)
				i = 0;
		}

		System.out.println(i+1);
		
	}
	
	public static int check(Player[] player, int p){
		for(int i = 0; i < player.length; i++){
			if(p != i){
				if(player[i].table.size() > 0 && player[p].table.size() > 0 && player[i].table.get(player[i].table.size()-1) == player[p].table.get(player[p].table.size()-1)){
					return i;
				}
			}
		}
		return -1;
	}

}

class Player {
	ArrayList<Integer> hand;
	ArrayList<Integer> table;
	
	public Player(){
		hand = new ArrayList<Integer>();
		table = new ArrayList<Integer>();
	}
	
	public void AddToHand(int i){
		hand.add(0, i);
	}
	
	public void AddToTable(int i){
		table.add(i);
	}
	
	public void MergeFromTable(ArrayList<Integer> me, ArrayList<Integer> he){
		hand.addAll(me);
		hand.addAll(he);
	}
	
	public int PlayCard(){
		int tmp = hand.remove(0);
		table.add(tmp);
		return tmp;
	}
	
	public void EmptyTable(){
		table = new ArrayList<Integer>();
	}
	
	public void PickTable() {
		hand.addAll(table);
		table = new ArrayList<Integer>();
	}
}