Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- public class stuckinarut {
- static class cow{
- int x;
- int y;
- char dir;
- int number;
- int recentX;
- int recentY;
- int counter;
- }
- public static void main(String [] args){
- Scanner scan = new Scanner(System.in);
- int n = scan.nextInt();
- cow array[] = new cow[n];
- int maxX = -1;
- int maxY = -1;
- for(int i = 0; i < n; i++) {
- array[i] = new cow();
- array[i].dir = scan.next().charAt(0);
- array[i].x = scan.nextInt();
- array[i].y = scan.nextInt();
- array[i].number = i;
- if(maxX < array[i].x) {
- maxX = array[i].x;
- }
- if(maxY < array[i].y) {
- maxY = array[i].y;
- }
- }
- maxX++;
- maxY++;
- ArrayList<Integer> cowsAlive = new ArrayList<Integer>();
- for(int i = 0; i < n; i++) {
- cowsAlive.add(i);
- }
- boolean grid[][] = new boolean[maxX][maxY];
- while(cowsAlive.size() != 0) {
- for(int i = 0; i < n; i++) {
- if(cowsAlive.contains(i)) {
- array[i].counter++;
- if(array[i].dir == 'E') {
- array[i].x++;
- if(array[i].x != maxX && grid[array[i].x][array[i].y]) {
- int shareGrass = -1;
- for(int ind = 0; ind <= i; ind++) {
- if(array[i].x == array[ind].recentX && array[i].y == array[ind].recentY) {
- shareGrass = 0;
- break;
- }
- }
- if(shareGrass == -1){
- for(int l = 0; l < cowsAlive.size(); l++) {
- if(cowsAlive.get(l) == i) {
- cowsAlive.remove(l);
- break;
- }
- }
- }
- }
- if(array[i].x == maxX) {
- array[i].counter = -10;//-10 means infinity
- for(int l = 0; l < cowsAlive.size(); l++) {
- if(cowsAlive.get(l) == i) {
- cowsAlive.remove(l);
- break;
- }
- }
- }
- }
- else {
- array[i].y++;
- if(array[i].y != maxY && grid[array[i].x][array[i].y]) {
- for(int l = 0; l < cowsAlive.size(); l++) {
- if(cowsAlive.get(l) == i) {
- cowsAlive.remove(l);
- break;
- }
- }
- }
- if(array[i].y == maxY) {
- array[i].counter = -10;//-10 means infinity
- for(int l = 0; l < cowsAlive.size(); l++) {
- if(cowsAlive.get(l) == i) {
- cowsAlive.remove(l);
- break;
- }
- }
- }
- }
- }
- }
- for(int i = 0; i < n; i++) {
- if(array[i].x < maxX && array[i].y < maxY) {
- array[i].recentX = array[i].x;
- array[i].recentY = array[i].y;
- grid[array[i].x][array[i].y] = true;
- }
- }
- }
- boolean debug = false;
- if(debug) {
- for(int i =0 ; i < n ;i++) {
- System.out.println(array[i].x + " " + array[i].y + " " + (i + 1));
- }
- }
- for(int i = 0; i < n; i++) {
- if(array[i].counter == -10) {
- System.out.println("Infinity");
- }
- else
- System.out.println(array[i].counter);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment