tryhardyoninfinityhz

Untitled

Dec 12th, 2021
1,140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.83 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3. public class stuckinarut {
  4.     static class cow{
  5.         int x;
  6.         int y;
  7.         char dir;
  8.         int number;
  9.         int recentX;
  10.         int recentY;
  11.         int counter;
  12.     }
  13.     public static void main(String [] args){
  14.         Scanner scan = new Scanner(System.in);
  15.         int n = scan.nextInt();
  16.         cow array[] = new cow[n];
  17.         int maxX = -1;
  18.         int maxY = -1;
  19.         for(int i = 0; i < n; i++) {
  20.             array[i] = new cow();
  21.             array[i].dir = scan.next().charAt(0);
  22.             array[i].x = scan.nextInt();
  23.             array[i].y = scan.nextInt();
  24.             array[i].number = i;
  25.             if(maxX < array[i].x) {
  26.                 maxX = array[i].x;
  27.             }
  28.             if(maxY < array[i].y) {
  29.                 maxY = array[i].y;
  30.             }
  31.         }
  32.         maxX++;
  33.         maxY++;
  34.         ArrayList<Integer> cowsAlive = new ArrayList<Integer>();
  35.         for(int i = 0; i < n; i++) {
  36.             cowsAlive.add(i);
  37.         }
  38.         boolean grid[][] = new boolean[maxX][maxY];
  39.         while(cowsAlive.size() != 0) {
  40.             for(int i = 0; i < n; i++) {
  41.                 if(cowsAlive.contains(i)) {
  42.                     array[i].counter++;
  43.                     if(array[i].dir == 'E') {
  44.                         array[i].x++;
  45.                         if(array[i].x != maxX && grid[array[i].x][array[i].y]) {
  46.                             int shareGrass = -1;
  47.                             for(int ind = 0; ind <= i; ind++) {
  48.                                 if(array[i].x == array[ind].recentX && array[i].y == array[ind].recentY) {
  49.                                     shareGrass = 0;
  50.                                     break;
  51.                                 }
  52.                             }
  53.                             if(shareGrass == -1){
  54.                                 for(int l = 0; l < cowsAlive.size(); l++) {
  55.                                     if(cowsAlive.get(l) == i) {
  56.                                         cowsAlive.remove(l);
  57.                                         break;
  58.                                     }
  59.                                 }
  60.                             }
  61.                            
  62.                         }
  63.                         if(array[i].x == maxX) {
  64.                             array[i].counter = -10;//-10 means infinity
  65.                             for(int l = 0; l < cowsAlive.size(); l++) {
  66.                                 if(cowsAlive.get(l) == i) {
  67.                                     cowsAlive.remove(l);
  68.                                     break;
  69.                                 }
  70.                             }
  71.                         }
  72.                     }
  73.                     else {
  74.                         array[i].y++;  
  75.                         if(array[i].y != maxY && grid[array[i].x][array[i].y]) {
  76.                             for(int l = 0; l < cowsAlive.size(); l++) {
  77.                                 if(cowsAlive.get(l) == i) {
  78.                                     cowsAlive.remove(l);
  79.                                     break;
  80.                                 }
  81.                             }
  82.                         }
  83.                         if(array[i].y == maxY) {
  84.                             array[i].counter = -10;//-10 means infinity
  85.                             for(int l = 0; l < cowsAlive.size(); l++) {
  86.                                 if(cowsAlive.get(l) == i) {
  87.                                     cowsAlive.remove(l);
  88.                                     break;
  89.                                 }
  90.                             }
  91.                         }
  92.                     }
  93.                 }
  94.             }
  95.             for(int i = 0; i < n; i++) {
  96.                 if(array[i].x < maxX && array[i].y < maxY) {
  97.                     array[i].recentX = array[i].x;
  98.                     array[i].recentY = array[i].y;
  99.                     grid[array[i].x][array[i].y] = true;
  100.                 }
  101.             }
  102.         }
  103.         boolean debug = false;
  104.         if(debug) {
  105.             for(int i =0 ; i < n ;i++) {
  106.                 System.out.println(array[i].x + " " + array[i].y + " " + (i + 1));
  107.             }
  108.         }
  109.         for(int i = 0; i < n; i++) {
  110.             if(array[i].counter == -10) {
  111.                 System.out.println("Infinity");
  112.             }
  113.             else
  114.             System.out.println(array[i].counter);
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment