상세 컨텐츠

본문 제목

거울 (JUNGOL 8605)

PS,CP

by 코딩생활 2026. 5. 11. 16:00

본문

https://jungol.co.kr/problem/8605?cursor=MjcsMSw0


아이디어

위치 x에서 위치 a의 거울에 의해 반사되었다고 해봅시다. 그러면 위치는 2a-x가 됩니다. 이 상태에서 위치 b의 거울에 의해 반사가 되면 2b-2a+x가 됩니다. 이를 반복하다보면 늦게 적용한 거울부터 +, -, +, - 가 반복되게 됩니다. 그러므로 거울이 짝수개라면 큰 N/2개가 +를, 작은 N/2개가 -를 가져가고 거울이 홀수개라면 큰 (N+1)/2개가 +를, 작은 (N-1)/2개가 -를 가져가면 됩니다.


소스코드

#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;

ll arr[202020]={0};

int main() 
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N,s,i;

    cin>>N>>s;
    for (i=0;i<N;i++) cin>>arr[i];
    sort (arr,arr+N);

    ll Ans=0;
    for (i=0;i<N/2;i++) Ans-=arr[i]*2;
    for (i=N/2;i<N;i++) Ans+=arr[i]*2;
    if (N%2==0) Ans+=s;
    else Ans-=s;

    cout<<Ans;  
}

'PS,CP' 카테고리의 다른 글

멋쟁이 토마토 (JUNGOL)  (0) 2026.05.12
호숫가의 개미굴 (JUNGOL 5754)  (0) 2026.05.12
건초 더미 (JUNGOL 8569)  (0) 2026.05.11
점프 (JUNGOL 8595)  (0) 2026.05.10
Zhily and Mex and Max (CF R 1097 Div.2 - B)  (0) 2026.05.10

관련글 더보기