문제) 롤케이크
package algorithm_study.day0207;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int size=Integer.parseInt(br.readLine());
int M=Integer.parseInt(br.readLine());
int[] rollcake=new int[size+1];
int[] start=new int[M+1];
int[] end=new int[M+1];
for(int i=1;i<=M;i++) {
String[] s=br.readLine().split(" ");
start[i]=Integer.parseInt(s[0]);
end[i]=Integer.parseInt(s[1]);
}
Map<Integer, Integer> map=new HashMap<Integer, Integer>();
int b_Max=0;
int max_person=0;
for(int i=1;i<=M;i++) {
int p=0;
map.put(i, p);
int i_Max=end[i]-start[i]+1;
if(b_Max<i_Max) {
b_Max=i_Max;
max_person=i;
}
for(int j=start[i];j<=end[i];j++) {
if(rollcake[j]==0) {
rollcake[j]=i;
p+=1;
map.put(i, p);
// System.out.println(Arrays.toString(rollcake));
}
}
}
List<Map.Entry<Integer, Integer>> entryList = new LinkedList<>(map.entrySet());
entryList.sort(Map.Entry.comparingByKey((a, b) -> b- a));
entryList.sort(Map.Entry.comparingByValue());
// System.out.println(entryList);
sb.append(max_person).append("\n");
sb.append(entryList.get(M-1).getKey()).append("\n");
System.out.print(sb.toString());
}
}