import java.io.*;
import java.util.*;
class Main{
public static void main(String args[])throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int musicNum, fret = 0;
int move = 0;
int nowLine, nowFret; //현재 줄과 프렛 번호를 알기 위한 변수 선언
Stack<Integer>[] stack = new Stack[7]; // 1~6번 줄 스택 배열생성
StringTokenizer st = new StringTokenizer(br.readLine());
musicNum = Integer.parseInt(st.nextToken());
fret = Integer.parseInt(st.nextToken());
//스택 배열 각각 요소에 스택 선언
for (int i = 1; i<7 ; i++) {
stack[i] = new Stack<Integer>();
}
for (int i = 0; i < musicNum; i++) {
st = new StringTokenizer(br.readLine());
nowLine = Integer.parseInt(st.nextToken());
nowFret = Integer.parseInt(st.nextToken());
// 현재 프렛보다 크면 손 떼기
while(!stack[nowLine].isEmpty() && stack[nowLine].peek() > nowFret ){
stack[nowLine].pop();
move++;
}
// 현재 줄 에서 잡은 프렛이 없거나 현재 줄에서 잡은 프렛이 현재 프렛보다 작을 경우 프렛을 새로 잡기
if (stack[nowLine].isEmpty() || stack[nowLine].peek() < nowFret) {
stack[nowLine].push(nowFret);
move++;
}
}
System.out.println(move);
}
}
얻어갈 점: