Skip to content

Commit 9c5d1b3

Browse files
authored
Merge pull request #1878 from AlgorithmWithGod/LiiNi-coder
[20260203] BOJ / G5 / 수열과 현팅 / 이인희
2 parents a6590a4 + d8bd7b0 commit 9c5d1b3

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.Arrays;
6+
import java.util.StringTokenizer;
7+
8+
public class Main {
9+
public static void main(String[] args) throws IOException {
10+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
int n = Integer.parseInt(br.readLine());
12+
long[] ms = new long[n];
13+
long[] ps = new long[n];
14+
long[] sortedMs = new long[n];
15+
long[] sortedPs = new long[n];
16+
for (int i = 0; i < n; i++) {
17+
StringTokenizer st = new StringTokenizer(br.readLine());
18+
long a = Long.parseLong(st.nextToken());
19+
long b = Long.parseLong(st.nextToken());
20+
ms[i] = a - b;
21+
ps[i] = a + b;
22+
sortedMs[i] = ms[i];
23+
sortedPs[i] = ps[i];
24+
}
25+
Arrays.sort(sortedMs);
26+
Arrays.sort(sortedPs);
27+
28+
StringBuilder sb = new StringBuilder();
29+
for (int i = 0; i < n; i++) {
30+
long low = ms[i];
31+
long high = ps[i];
32+
33+
int minIdx = lowerBound(sortedPs, low) + 1;
34+
int maxIdx = upperBound(sortedMs, high);
35+
sb.append(minIdx).append(" ").append(maxIdx).append("\n");
36+
}
37+
System.out.println(sb.toString());
38+
}
39+
40+
private static int lowerBound(long[] arr, long target) {
41+
int l = 0;
42+
int r = arr.length;
43+
while (l < r) {
44+
int mid = (l + r) / 2;
45+
if (arr[mid] < target) {
46+
l = mid + 1;
47+
} else {
48+
r = mid;
49+
}
50+
}
51+
return l;
52+
}
53+
54+
private static int upperBound(long[] arr, long target) {
55+
int l = 0;
56+
int r = arr.length;
57+
while (l < r) {
58+
int mid = (l + r) / 2;
59+
if (arr[mid] <= target) {
60+
l = mid + 1;
61+
} else {
62+
r = mid;
63+
}
64+
}
65+
return l;
66+
}
67+
}
68+
69+
```

0 commit comments

Comments
 (0)