A. ConneR the A.R.C. Markland-N
코너라는 사람이 건물 안에서 가장 가까운 레스토랑을 찾아갈 때 움직이는 층수를 출력하는 문제입니다.
영업을 하지 않는 레스토랑의 층들을 map으로 저장해서, 코너가 있는 층부터 위아래로 탐색을하며
map 안에 해당 층의 값이 없을 경우 영업을 하는 레스토랑을 찾습니다.
이후 위로 가는 것과 아래로 가는 것 중 최소값을 찾아 출력합니다.
#include <iostream>
#include <map>
using namespace std;
int main (){
int numInput;
cin >> numInput ;
for (int i = 0; i< numInput ; i ++ ){
int numStairs;
int curStair;
int numBlocked;
cin >> numStairs >> curStair >> numBlocked;
map<int, int> blockedMap;
for (int j = 0; j < numBlocked; j ++){
int blockedStair;
cin >> blockedStair;
blockedMap.insert (pair<int,int> (blockedStair, blockedStair));
}
int shortestUpStair = 0;
int shortestDownStair = 0;
int shortestStair = 0;
for (int j = curStair; j <= numStairs; j ++){
if(blockedMap.count(j) == 0){
shortestUpStair = j;
break;
}
}
for (int j = curStair; j > 0; j --){
if(blockedMap.count(j) == 0){
shortestDownStair = j;
break;
}
}
if(shortestDownStair == 0){
shortestStair = shortestUpStair - curStair;
} else if(shortestUpStair == 0){
shortestStair = curStair - shortestDownStair;
}else{
shortestStair = min(curStair - shortestDownStair, shortestUpStair - curStair);
}
cout << shortestStair << endl;
}
return 0;
}
반응형
'codeforce > #614 (Div.2)' 카테고리의 다른 글
Codeforces Round #614 (Div.2 ) D. Aroma's Search (0) | 2020.02.02 |
---|---|
Codeforces Round #614 (Div.2 ) C. NEKO's Maze Game (0) | 2020.02.02 |
Codeforces Round #614 (Div.2 ) B. JOE is on TV! (0) | 2020.02.01 |