题目在这里1193
n两个人交换箱子互换方向,相当于没有交换。
n当经过2F时间后,所有人的状态没有改变,0层的其中N个箱子搬到了F层,因此先把B对N取模。求出每个人从当前状态把0层的一个箱子搬到F层需要的时间,排序,B对N取模的余数就由最快的部分人来搬。
代码如下,仅供参考
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
int T, N, F, B;
int m, n;
int steps[1001];
cin >> T;
while (T--)
{
memset(steps, 0, sizeof(steps));
cin >> N >> F >> B;
for (int i = 0; i < N; i++)
{
cin >> m >> n;
if (n == 0)
steps[i] = F + m;
else
steps[i] = 3 * F - m;
}
sort(steps, steps + N);
int ans, left;
left = B % N;
if (left == 0)
ans = (B / N - 1) * 2 * F + steps[N - 1];
else
ans = B / N * 2 * F + steps[left - 1];
cout << ans << endl;
}
//system("pause");
return 0;
}