작성
·
16
0
#include <iostream>
using namespace std;
int N, M, J;
int l, r, cnt;
int main(){
cin >> N >> M >> J;
// 초기화
l = 1; r = M; cnt = 0;
for (int i = 0; i < J; i++){
int apple;
cin >> apple;
// 범위 안이라서 움직일 필요 없다.
if (apple >= l && apple <= r) continue;
// 왼쪽에 가까우면 왼쪽으로 이동 오른쪽에 가까우면 오른쪽으로 이동
int leftLength = abs(l - apple);
int rightLength = abs(r - apple);
bool isLeft = leftLength < rightLength ? true : false;
if (isLeft){
l -= leftLength;
r -= leftLength;
cnt += leftLength;
}
else{
l += rightLength;
r += rightLength;
cnt += rightLength;
}
}
cout << cnt;
return 0;
}
제가 만든 로직대로라면 절대로 경계값을 벗어날 수가 없습니다.
왜냐하면 문제에서 "각 사과는 N칸중 한 칸의 상단에서 떨어지기 시작하며" 라고 주어져 있기 때문입니다.
67%에서 틀렸다고 나옵니다..!
답변