/* Subject: Contest submission for problem #3, file 3.java */ /* jeffpast@imail.EECS.Berkeley.EDU */ /* Thu Sep 11 11:52:30 PDT 2003 */ /*___CONTEST_SUBMISSION___ jeffpast 3 */ /* * P3.java * * Created on September 8, 2003, 12:27 AM */ import java.util.*; import java.io.*; /** * * @author Jeff */ class P3 { /** Creates a new instance of P3 */ public P3() { } /** * @param args the command line arguments */ public static void main(String[] args) throws IOException{ StreamTokenizer t = new java.io.StreamTokenizer(new InputStreamReader(System.in)); Hashtable windows = new Hashtable(); t.nextToken(); int width = (int)t.nval; t.nextToken(); int height = (int)t.nval; windows.put(new Integer(1), new Window(0,0,width,height)); while (t.nextToken() != t.TT_EOF) { int windowNumber = (int)t.nval; //special debugging virtual EOF command if (windowNumber == -1914) break; t.nextToken(); int parentNumber = (int)t.nval; t.nextToken(); int size = (int)t.nval; t.nextToken(); String placement = t.sval; Window parent = (Window)windows.get(new Integer(parentNumber)); Window newWindow = null; if (placement.equals("B")) { newWindow = new Window(parent.freeSpace.x, parent.freeSpace.y, parent.freeSpace.width, size); parent.freeSpace.y += size; parent.freeSpace.height -= size; } else if (placement.equals("T")) { newWindow = new Window(parent.freeSpace.x, parent.freeSpace.y+parent.freeSpace.height-size, parent.freeSpace.width, size); parent.freeSpace.height -= size; } else if (placement.equals("L")) { newWindow = new Window(parent.freeSpace.x, parent.freeSpace.y, size, parent.freeSpace.height); parent.freeSpace.x += size; parent.freeSpace.width -= size; } else if (placement.equals("R")) { newWindow = new Window(parent.freeSpace.x+parent.freeSpace.width-size, parent.freeSpace.y, size, parent.freeSpace.height); parent.freeSpace.width -= size; } windows.put(new Integer(windowNumber),newWindow); } TreeSet list = new TreeSet(windows.keySet()); Iterator i = list.iterator(); while (i.hasNext()){ Integer key = (Integer)i.next(); Window window = (Window)windows.get(key); System.out.println(key.toString() + ". " + window.width + "x" + window.height + " @ (" + window.x + "," + window.y + ")"); } System.exit(0); } } class Window { int x; int y; int height; int width; Window freeSpace; private Window(){ } //private constructor for creating freeSpace window public Window (int x, int y, int width, int height){ this.x = x; this.y = y; this.width = width; this.height = height; freeSpace = new Window(); freeSpace.x = x; freeSpace.y = y; freeSpace.height = height; freeSpace.width = width; } }