# 본인 풀이

#include<bits/stdc++.h>
using namespace std;
int m, n, apple, pos, ret, head, tail;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    // n : 스크린 너비 , m : 바구니 너비
    cin >> n >> m;
    head = 1;
    tail = m;

    // 사과 개수
    cin >> apple;

    for (int i = 0; i < apple; i++){
        cin >> pos;

        // 사과가 바구니 안에 들어올때
        if(pos >= head && pos <= tail){
            continue;
        }else if(pos < head){
            ret += head - pos;
            tail -= head - pos;
            head = pos;
        }else if(pos > tail){
            ret += pos - tail;
            head += pos - tail;
            tail = pos;
        }
    }
    cout << ret << "\n";

    return 0;
}
  1. 바구니 왼쪽 끝과 오른쪽 끝을 두어 사과가 떨어지는 포지션에 따라 이동시키는 로직으로 구성하였다.
  2. 중간에 ret, head, tail을 계산하는 과정에서 어떤 연산이 먼저 진행되어야 하는지 중요하게 고려되어야 하는 점 외에 어려운 것은 없었음.

# 모범 답안

본인 풀이와 동일함.