#include <iostream>
using namespace std;
#define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int n,k;
int card[1001];
bool visited[1001];
void INPUT()
{
IAMFAST
cin >> n >> k;
for(int i = 0; i < n*k; i++) cin >> card[i];
}
void SOLVE()
{
int cnt = 0;//제거한 카드 수
int idx = 0;//선택된 카드
while(cnt != n*k-1)//한 장만 남을 때까지
{
//오른쪽으로 이동할 횟수
int move = card[idx];
//선택된 카드+1
cnt++;
//방문 표시
visited[idx] = true;
for(int i = 1; i <= move; i++)
//이미 제거한 카드라면 고려하지 않음 -> move+1
if(visited[(idx+i)%(n*k)]) move++;
//선택할 카드 갱신
idx = (idx+move)%(n*k);
}
cout << (idx)/k + 1 << " " << card[idx];
}
int main()
{
INPUT();
SOLVE();
}
GOLD5 미만 난이도는 알고리즘 및 풀이 설명을 주석으로 대체합니다.
주석을 참고해주세요.