문제 링크
https://www.acmicpc.net/problem/10804
문제 정보
입력
총 10개의 줄에 걸쳐 한 줄에 하나씩 10개의 구간이 주어진다. i번째 줄에는 i번째 구간의 시작 위치 ai와 끝 위치 bi가 차례대로 주어진다. 이때 두 값의 범위는 1 ≤ ai ≤ bi ≤ 20이다.
출력
1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다.
풀이
C++ Algorithm 헤더파일에 들어있는 함수인 reverse()를 이용하면 쉽게 해결 할 수 있다!
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
int card[20];
for (int i = 0; i < 20; i++) {
card[i] = i + 1;
}
int a, b;
for (int i = 0; i < 10; i++) {
cin >> a >> b;
reverse(card + a - 1, card + b);
}
for (int i = 0; i < 20; i++) {
cout << card[i] << ' ';
}
return 0;
}