File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.util.* ;
3+ import java.io.* ;
4+ public class Main {
5+ public static void main (String [] args ) throws Exception {
6+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
7+ BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System . out));
8+ StringTokenizer st = new StringTokenizer (br. readLine());
9+ int N = Integer . parseInt(st. nextToken());
10+ long K = Long . parseLong(st. nextToken());
11+ int [] workSpeed = new int [N ];
12+
13+ st = new StringTokenizer (br. readLine());
14+ for (int i= 0 ;i< N ;i++ ){
15+ workSpeed[i] = Integer . parseInt(st. nextToken());
16+ }
17+ Arrays . sort(workSpeed);
18+
19+ int min = workSpeed[0 ]; // 어느 한쪽 팀은 무조건 전체 속도의 최솟값을 가지게 될거임. 이를 a로 설정
20+ int aTeamCount = 0 ;
21+ int aTeamSpeed = min;
22+ int bTeamCount = 0 ;
23+ long bTeamSpeed = 0 ;
24+ long totalSpeed = 0 ;
25+ long maxSpeed = 0 ;
26+ for (int i= 1 ;i< N ;i++ ){
27+ bTeamSpeed = workSpeed[i]; // 작업 속도배열을 순회하며 하나씩 최솟값이 존재하지 않는 다른 팀의 하한으로 결정
28+ aTeamCount = i;
29+ bTeamCount = N - i;
30+ /* 작업 속도는 정렬되어 있고 총 작업 속도의 최댓값을 찾는 것이 목적. 이때 작업속도의 최솟값이 존재하지
31+ * 않는 bTeam의 작업자 입장에서는 ateam의 하한에 곱해질 바에 bteam의 하한에 곱해지는게 무조건 이득임.
32+ */
33+ totalSpeed = (long )aTeamCount* aTeamSpeed + bTeamCount* bTeamSpeed;
34+ maxSpeed = Math . max(maxSpeed,totalSpeed);
35+ }
36+ bw. write((K + maxSpeed- 1 )/ maxSpeed+ " " );
37+
38+ bw. flush();
39+ }
40+ }
41+ ```
You can’t perform that action at this time.
0 commit comments