缘由2019北京海淀(小学)选拔 义卖(sale)_编程语言-CSDN问答
按开始时间升序,找前结束时间对应后开始时间,并判断后结束时间是否在规定时间内,循环计算出个数,一趟匹配结束计算匹配次数,次数到限制条件结束运行,否则运行到数据最后。

void 安排义卖人员()
{
int a[1000][2]{}, x = 0, j = 0, m = 0, n = 0, z = 0, c = 0, t = 0;
std::cin >> z >> n; j = n – 1;//10 6 0 5 1 9 5 10 2 5 5 9 4 5//10 6 0 4 4 7 5 10 2 5 7 9 4 5
sr:if (x < n){ std::cin >> a[x][0] >> a[x][1]; ++x; goto sr; }x = 0;
px:if (x < n)
{
if (x < j && a[x][0] > a[j][0])
两数交换(a[x][0], a[j][0]), 两数交换(a[x][1], a[j][1]);
if (–j <= x)
++x, j = n – 1;
goto px;
}x = j = 0;
js:if (c < 2 && x < n)
{
if (++j < n)
{
if (a[x][1] < z * 2 && a[x][1] == a[j][0] && a[j][1] <= z)
++m, a[x][0] = a[j][0], a[x][1] = a[j][1],
a[j][0] = a[j][1] = z * 2;
}
else
{
if (m)
++c, t += m + 1, m = 0;
a[x][1] = a[x][0] = z * 2;
++x, j = x;
}
goto js;
}
std::cout << t << "\\n";
}

网硕互联帮助中心





评论前必须登录!
注册