Sunday, 21 December 2014

LightOJ [1113]

Problem 
1113 - Discover the Web

Idea Flow
Input_Constraint ~ All operation must be done in O(1)
Question Hints ~ Cake Walk
Conclusion ~ Just follow what problem statement tells.
Learnt lesson ~ Solver need to analyze the time complexity.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package net.egork;

import java.util.ArrayList;
import java.util.Scanner;
import java.io.PrintWriter;
import java.util.Stack;

public class L1113 {

    private static final String FORWARD = "FORWARD";
    private static final String VISIT = "VISIT";
    private static final String BACK = "BACK";
    private static final String QUIT = "QUIT";
    private static final String IGNORED = "Ignored";
    private static final String URL = "http://www.lightoj.com/";

    public void solve(int testNumber, Scanner in, PrintWriter out) {
        int testCase;
        testCase = in.nextInt();
        String query[];
        String current;
        for (int i = 1; i <= testCase; i++) {
            System.out.println("Case " + i + ":");
            Stack<String> forwardStack = new Stack<String>();
            Stack<String> backwardStack = new Stack<String>();
            current = URL;
            while (true) {
                query = in.nextLine().split(" ");
                if (query[0].equals(FORWARD)) {
                    if (forwardStack.isEmpty()) {
                        System.out.println(IGNORED);
                    } else {
                        backwardStack.add(current);
                        current = forwardStack.peek();
                        forwardStack.pop();
                        System.out.println(current);

                    }
                } else if (query[0].equals(VISIT)) {
                    backwardStack.push(current);
                    forwardStack.clear();
                    current = query[1];
                    System.out.println(current);
                } else if (query[0].equals(BACK)) {
                    if (backwardStack.isEmpty()) {
                        System.out.println(IGNORED);
                    } else {
                        forwardStack.add(current);
                        current = backwardStack.peek();
                        backwardStack.pop();
                        System.out.println(current);
                    }

                } else if (query[0].equals(QUIT)) {
                    break;
                }

            }
        }

    }
}

No comments:

Post a Comment