ผลต่างระหว่างรุ่นของ "01204212/like"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 4 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 11: แถว 11:
  
 
There are '''N''' lines of output, each contains the current number of likes the post ID '''x''' has so far (including this one).
 
There are '''N''' lines of output, each contains the current number of likes the post ID '''x''' has so far (including this one).
 
== Example ==
 
  
 
== Example ==
 
== Example ==
แถว 52: แถว 50:
  
 
Download at: [http://theory.cpe.ku.ac.th/~jittat/courses/01204212/tasks/id-requests/ here]
 
Download at: [http://theory.cpe.ku.ac.th/~jittat/courses/01204212/tasks/id-requests/ here]
 +
 +
Solution to <tt>n10.in</tt>
 +
 +
<pre>
 +
1
 +
1
 +
1
 +
1
 +
1
 +
1
 +
1
 +
2
 +
1
 +
2
 +
</pre>
 +
 +
Solution to <tt>n1000.in</tt> (first 20 lines)
 +
 +
<pre>
 +
1
 +
1
 +
1
 +
1
 +
1
 +
2
 +
1
 +
1
 +
1
 +
1
 +
1
 +
2
 +
3
 +
1
 +
2
 +
1
 +
4
 +
2
 +
1
 +
1
 +
</pre>
 +
 +
== Code ==
 +
 +
'''Collections:'''  you will have to use [https://docs.oracle.com/javase/7/docs/api/java/util/Map.html the Map interface].  These are implementations:
 +
 +
* [https://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html TreeMap]
 +
* [http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html HashMap]
 +
 +
You can use the same Main class from task [[01204212/id request|ID request]]
 +
 +
== Code for your own implementation of binary search trees ==
 +
=== TreeNode ===
 +
<syntaxhighlight lang="java">
 +
public class TreeNode {
 +
    public int key;
 +
    public int val;
 +
    public TreeNode leftChild;
 +
    public TreeNode rightChild;
 +
 +
    public TreeNode(int k, int v) {
 +
        key = k;
 +
        val = v;
 +
        leftChild = rightChild = null;
 +
    }
 +
}
 +
</syntaxhighlight>
 +
 +
=== An example of find ===
 +
<syntaxhighlight lang="java">
 +
    private TreeNode find(TreeNode node, int key) {
 +
        if(node == null) {
 +
            return null;
 +
        }
 +
        if(node.key == key) {
 +
            return node;
 +
        } else if(node.key < key) {
 +
            return find(node.rightChild, key);
 +
        } else {
 +
            return find(node.leftChild, key);
 +
        }
 +
    }
 +
</syntaxhighlight>

รุ่นแก้ไขปัจจุบันเมื่อ 04:48, 6 ตุลาคม 2559

This is part of 01204212

You want to keep track of the number of "likes" each status has. In the beginning, every status has 0 likes. You are given a sequence of like clicks (as a sequence of status IDs).

Input

  • First line: an integer N (1<=N<=100,000)
  • The next N lines: each line contains an integer x, the ID of the post clicked.

Output

There are N lines of output, each contains the current number of likes the post ID x has so far (including this one).

Example

Input

10
4
2
4
10
100
30
10
35
4
200

Output

1
1
2
1
1
1
2
1
3
1

Test data

Use the test data for ID requests

Download at: here

Solution to n10.in

1
1
1
1
1
1
1
2
1
2

Solution to n1000.in (first 20 lines)

1
1
1
1
1
2
1
1
1
1
1
2
3
1
2
1
4
2
1
1

Code

Collections: you will have to use the Map interface. These are implementations:

You can use the same Main class from task ID request

Code for your own implementation of binary search trees

TreeNode

public class TreeNode {
    public int key;
    public int val;
    public TreeNode leftChild;
    public TreeNode rightChild;
	
    public TreeNode(int k, int v) {
        key = k;
        val = v;
        leftChild = rightChild = null;
    }
}

An example of find

    private TreeNode find(TreeNode node, int key) {
        if(node == null) {
            return null;
        }
        if(node.key == key) {
            return node;
        } else if(node.key < key) {
            return find(node.rightChild, key);
        } else {
            return find(node.leftChild, key);
        }
    }