-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
82 lines (70 loc) · 2.41 KB
/
Main.java
File metadata and controls
82 lines (70 loc) · 2.41 KB
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
ArrayList<Crane> cranes = new ArrayList<Crane>();
st = new StringTokenizer(br.readLine());
int maxCrane = 0;
for(int i=0; i<n; i++){
int crane = Integer.parseInt(st.nextToken());
maxCrane = Math.max(crane, maxCrane);
cranes.add(new Crane(crane, 0));
}
st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
Integer[] boxes = new Integer[m];
st = new StringTokenizer(br.readLine());
int maxBox = 0;
for(int i=0; i<m; i++){
boxes[i] = Integer.parseInt(st.nextToken());
maxBox = Math.max(boxes[i], maxBox);
}
if(maxBox > maxCrane){
System.out.println(-1);
return;
}
Collections.sort(cranes, (Crane c1, Crane c2)->{
return Integer.compare(c2.capacity, c1.capacity);
});
Arrays.sort(boxes, Collections.reverseOrder());
boolean[] moved = new boolean[m];
Arrays.fill(moved, false);
int time=0;
int cnt=0;
while(true){
if(cnt == boxes.length) {
break;
}
for(int i=0; i<n; i++){
while(cranes.get(i).position < boxes.length){
if(!moved[cranes.get(i).position] && cranes.get(i).capacity >= boxes[cranes.get(i).position]){
moved[cranes.get(i).position] = true;
cranes.get(i).position++;
cnt++;
break;
}
cranes.get(i).position++;
}
}
time++;
}
System.out.println(time);
br.close();
}
}
class Crane {
Integer capacity;
Integer position;
public Crane (Integer capacity, Integer position){
this.capacity = capacity;
this.position = position;
}
}