Skip to content

Commit 5961578

Browse files
committed
Metal Harvest / ArrayList / AC / 2021.04.17
1 parent 2f8ada7 commit 5961578

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Owen's Algorithm Problem Solving Note
2121
#### Round F
2222

2323
1. [ATM Queue](https://github.com/dev-owen/Algorithms-2021/blob/main/src/Kickstart_2020_F_1.java) / Priority Queue / AC / 2021.04.16
24+
2. [Metal Harvest](https://github.com/dev-owen/Algorithms-2021/blob/main/src/Kickstart_2020_F_2.java) / ArrayList / AC / 2021.04.17
2425

2526

2627
### 2021

src/Kickstart_2020_F_2.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Kickstart_2020_F_2 {
5+
static final int MAX_INT = 1000000001;
6+
public static void main(String[] args) throws IOException {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
StringTokenizer st = new StringTokenizer(br.readLine());
9+
int T = Integer.parseInt(st.nextToken());
10+
for (int i = 1; i <= T; i++) {
11+
st = new StringTokenizer(br.readLine());
12+
int N = Integer.parseInt(st.nextToken());
13+
int K = Integer.parseInt(st.nextToken());
14+
ArrayList<Harvest> list = new ArrayList<>();
15+
int sum = 0;
16+
for(int j = 0; j < N; j++) {
17+
st = new StringTokenizer(br.readLine());
18+
int start = Integer.parseInt(st.nextToken());
19+
int end = Integer.parseInt(st.nextToken());
20+
list.add(new Harvest(start, end));
21+
}
22+
Collections.sort(list);
23+
int cur = list.get(0).start+K;
24+
sum++;
25+
for(int j = 0; j < list.size(); j++) {
26+
if(list.get(j).start >= cur) {
27+
cur = list.get(j).start + K;
28+
sum++;
29+
}
30+
if(list.get(j).end > cur) {
31+
while (list.get(j).end > cur) {
32+
sum++;
33+
cur += K;
34+
}
35+
}
36+
}
37+
System.out.println("Case #" + i + ": "+sum);
38+
}
39+
}
40+
}
41+
42+
class Harvest implements Comparable<Harvest>{
43+
int start, end;
44+
45+
Harvest(int start, int end) {
46+
this.start = start;
47+
this.end = end;
48+
}
49+
50+
@Override
51+
public int compareTo(Harvest p) {
52+
if(this.end > p.end) return 1;
53+
else if(this.end == p.end) {
54+
if(this.start > p.start) return 1;
55+
}
56+
return -1;
57+
}
58+
}

0 commit comments

Comments
 (0)