Submission #1173742


Source Code Expand

import java.util.ArrayList;
import java.util.Arrays;
import java.util.ListIterator;
import java.util.Scanner;

public class Main{
	static Scanner s = new Scanner(System.in);
	static final int h=30,w=30,cars=450,time=10000;
	static final Car field[][] = new Car[h][w];
	//static final Car    ar[]   = new Car[cars];

	static final ArrayList<Car> carList = new ArrayList<>(cars);

	static final ArrayList<String> finalResult = new ArrayList<>(50);

	public static void main(String[] args) {
		s.next();s.next();s.next();s.next();
		for(int i=0;i<cars;i++) {
			Car c = new Car(i);
			carList.add(c);
			field[c.y][c.x] = c;
		}


		char[] movement = new char[cars];

		ListIterator<Car> iterator;
		Car c;
		MoveState r;
		for(int l=0;l<time;l++) {

			for(int i=0;i<h;i++)for(int j=0;j<w;j++) {
				if(field[i][j]!=null&&field[i][j].no==-1)
					field[i][j]=null;
			}

			Arrays.fill(movement, '-');
			boolean unbreakFlag = false;

			iterator = carList.listIterator();
			while(iterator.hasNext()) {c=iterator.next();
				r=c.move(movement);
				unbreakFlag|=(r==MoveState.MOVED);
				if(r==MoveState.GOALED)
					iterator.remove();
			}

			finalResult.add(String.valueOf(movement));
			if(!unbreakFlag)
				break;
		}


		if(finalResult.get(finalResult.size()-1).matches("-*"))finalResult.remove(finalResult.size()-1);
		System.out.println(finalResult.size());
		finalResult.stream().forEachOrdered(System.out::println);
	}

	static class Car{
		int x,y,tx,ty,no;
		Car(){
		}
		Car(int NO_) {
			no=NO_;
			 y=Integer.parseInt(s.next())-1;
			 x=Integer.parseInt(s.next())-1;
			ty=Integer.parseInt(s.next())-1;
			tx=Integer.parseInt(s.next())-1;
		}
		MoveState move(char[] ch) {
			if(x<tx) {
				if(field[y][x+1]==null) {
					field[y][  x]=DUMMYCAR.DUMMY;
					field[y][++x]=this;
					ch[no]='R';
					return this.goaled()?MoveState.GOALED:MoveState.MOVED;
				}
			}
			if(x>tx) {
				if(field[y][x-1]==null) {
					field[y][  x]=DUMMYCAR.DUMMY;
					field[y][--x]=this;
					ch[no]='L';
					return this.goaled()?MoveState.GOALED:MoveState.MOVED;
				}
			}
			if(y<ty) {
				if(field[y+1][x]==null) {
					field[  y][x]=DUMMYCAR.DUMMY;
					field[++y][x]=this;
					ch[no]='D';
					return this.goaled()?MoveState.GOALED:MoveState.MOVED;
				}
			}
			if(y>ty) {
				if(field[y-1][x]==null) {
					field[  y][x]=DUMMYCAR.DUMMY;
					field[--y][x]=this;
					ch[no]='U';
					return this.goaled()?MoveState.GOALED:MoveState.MOVED;
				}
			}
			return this.goaled()?MoveState.GOALED:MoveState.UNMOVED;
		}
		private boolean goaled() {
			return !(x!=tx||y!=ty);
		}
	}
	static enum MoveState{
		GOALED,
		MOVED,
		UNMOVED,
		;
	}
	static class DUMMYCAR extends Car{
		public static final DUMMYCAR DUMMY = new DUMMYCAR();
		private DUMMYCAR() {
			super();
			no=-1;
		}
	}
}

Submission Info

Submission Time
Task B - 日本橋大渋滞
User fal_rnd
Language Java8 (OpenJDK 1.8.0)
Score 4598
Code Size 2908 Byte
Status AC
Exec Time 287 ms
Memory 29020 KB

Judge Result

Set Name test_01 test_02 test_03 test_04 test_05 test_06 test_07 test_08 test_09 test_10 test_11 test_12 test_13 test_14 test_15 test_16 test_17 test_18 test_19 test_20 test_21 test_22 test_23 test_24 test_25 test_26 test_27 test_28 test_29 test_30
Score / Max Score 156 / 50000 160 / 50000 157 / 50000 159 / 50000 171 / 50000 159 / 50000 151 / 50000 160 / 50000 146 / 50000 150 / 50000 155 / 50000 156 / 50000 148 / 50000 161 / 50000 148 / 50000 161 / 50000 153 / 50000 147 / 50000 149 / 50000 152 / 50000 163 / 50000 152 / 50000 153 / 50000 144 / 50000 143 / 50000 153 / 50000 153 / 50000 141 / 50000 149 / 50000 148 / 50000
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
test_01 subtask_01_01.txt
test_02 subtask_01_02.txt
test_03 subtask_01_03.txt
test_04 subtask_01_04.txt
test_05 subtask_01_05.txt
test_06 subtask_01_06.txt
test_07 subtask_01_07.txt
test_08 subtask_01_08.txt
test_09 subtask_01_09.txt
test_10 subtask_01_10.txt
test_11 subtask_01_11.txt
test_12 subtask_01_12.txt
test_13 subtask_01_13.txt
test_14 subtask_01_14.txt
test_15 subtask_01_15.txt
test_16 subtask_01_16.txt
test_17 subtask_01_17.txt
test_18 subtask_01_18.txt
test_19 subtask_01_19.txt
test_20 subtask_01_20.txt
test_21 subtask_01_21.txt
test_22 subtask_01_22.txt
test_23 subtask_01_23.txt
test_24 subtask_01_24.txt
test_25 subtask_01_25.txt
test_26 subtask_01_26.txt
test_27 subtask_01_27.txt
test_28 subtask_01_28.txt
test_29 subtask_01_29.txt
test_30 subtask_01_30.txt
Case Name Status Exec Time Memory
subtask_01_01.txt AC 287 ms 28508 KB
subtask_01_02.txt AC 243 ms 27364 KB
subtask_01_03.txt AC 219 ms 26524 KB
subtask_01_04.txt AC 208 ms 27776 KB
subtask_01_05.txt AC 223 ms 28040 KB
subtask_01_06.txt AC 235 ms 24456 KB
subtask_01_07.txt AC 225 ms 26620 KB
subtask_01_08.txt AC 226 ms 25284 KB
subtask_01_09.txt AC 212 ms 24808 KB
subtask_01_10.txt AC 233 ms 24800 KB
subtask_01_11.txt AC 214 ms 29020 KB
subtask_01_12.txt AC 245 ms 28664 KB
subtask_01_13.txt AC 231 ms 25088 KB
subtask_01_14.txt AC 216 ms 28724 KB
subtask_01_15.txt AC 223 ms 24828 KB
subtask_01_16.txt AC 229 ms 26936 KB
subtask_01_17.txt AC 229 ms 26432 KB
subtask_01_18.txt AC 239 ms 25376 KB
subtask_01_19.txt AC 221 ms 23940 KB
subtask_01_20.txt AC 218 ms 24988 KB
subtask_01_21.txt AC 219 ms 24104 KB
subtask_01_22.txt AC 242 ms 24600 KB
subtask_01_23.txt AC 216 ms 25788 KB
subtask_01_24.txt AC 208 ms 28020 KB
subtask_01_25.txt AC 239 ms 28924 KB
subtask_01_26.txt AC 233 ms 26076 KB
subtask_01_27.txt AC 243 ms 27200 KB
subtask_01_28.txt AC 237 ms 27572 KB
subtask_01_29.txt AC 230 ms 25732 KB
subtask_01_30.txt AC 233 ms 27720 KB