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;
}

| 멋쟁이 토마토 (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 |