[题解] P13277 「CZOI-R4」改编
一道简单题目。
题目表述很明确:
- 一个题目有初始的质量 \(a_i\);
- 若 \(x_i = 1\),则 \(a_i - k_1\);
- 若 \(y_i = 1\),则 \(a_i - k_2\);
- 当 \(x_i = y_i = 1\) 或 \(a_i < 0\) 时,抛弃题目。
我们只需要计算出每一个的 \(a_i\),然后进行排序后输出答案即可。
建议排序时从大到小排列,最后输出 a[0] 即可。
// P13277 「CZOI-R4」改编
// code by:cq_irritater
// time:2025/07/13
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
int n, k1, k2;
int a[MAXN], x[MAXN], y[MAXN];
int ans, cnt;
bool cmp(int x, int y)
{
return x > y;
}
int main()
{
// freopen("code.in", "r", stdin);
scanf("%d %d %d", &n, &k1, &k2);
for (int i = 1; i <= n; i++)
{
scanf("%d %d %d", &a[i], &x[i], &y[i]);
}
for (int i = 1; i <= n; i++)
{
if (x[i] == 1)
{
a[i] = a[i] - k1;
}
if (y[i] == 1)
{
a[i] = a[i] - k2;
}
if (x[i] == 1 && y[i] == 1)
{
a[i] = -1;
}
}
for (int i = 1; i <= n; i++)
{
if (a[i] < 0)
{
cnt++;
}
if (cnt == n)
{
printf("-1");
return 0;
}
}
sort(a, a + n + 1, cmp);
printf("%d", a[0]);
return 0;
}

浙公网安备 33010602011771号