1+m씩 늘어난다는 점은 사이의 길이를 계산할 수 있다는 것이다.
#include <iostream>
using namespace std;
int n, j, m, index, len = 987654321;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> j >> m;
int nextLen = ((j - 1) / (m + 1) + 1) * 2;
if (nextLen < len)
{
len = nextLen;
index = i;
}
}
cout << index << " " << len;
return 0;
}
처음 내 차례 + 서로 주고받은 1+m의 개수 + 마지막 상대의 차례를 계산하면 된다.
처음 내 차례와 마지막 상대의 차례를 합치면 총합은 짝수가 된다. (서로 주고받은 횟수는 무조건 짝수일 것이기 때문이다)
즉 왕복 횟수를 구하고 2를 곱하면 된다.