import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int temp;
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for (int i = 0; i < N; i++)
arr[i] = i + 1;
for (int z = 0; z < M; z++) {
StringTokenizer st1 = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st1.nextToken()) - 1;
int j = Integer.parseInt(st1.nextToken()) - 1;
while (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
for (int i = 0; i < N; i++) {
System.out.printf("%d ", arr[i]);
}
}
}
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int[] arr = new int[sc.nextInt()];
for (int i = 0; i < arr.length; i++) { // 기본배열 생성
arr[i] = i + 1;
}
int N = sc.nextInt();
for (int i = 0; i < N; i++) {
int order1 = sc.nextInt() - 1;
int order2 = sc.nextInt() - 1;
while (order1 < order2) {
int temp = arr[order1];
arr[order1++] = arr[order2];
arr[order2--] = temp;
}
}
String ret = "";
for (int j = 0; j < arr.length; j++) {
ret += arr[j] + " ";
}
System.out.print(ret.trim());
sc.close();
}
}
풀고 나서 생각해보니 그렇게 어려운 문제는 아닌데 꽤 오랜 시간이 걸렸다. 처음에 문제 조건을 제대로 안봐서 i가 큰 경우 j가 큰 경우 나눠서 하는 바람에 헛수고를 했다. 배열에 값을 넣어줄 때는 +1을 잘 해놓고 i부터 j번째에는 -1을 해주지 않아서 계속 틀리게 나오는 걸 바로잡느라 또 시간이 걸렸다.