// P5661 [CSP-J2019] 公交换乘
// code by:cq_irritater
// time:2023/07/17
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e7 + 10;
struct tickets
{
int transport, price, time;
bool use; // use 表示 ticket 能否被使用
} ticket[MAXN];
int n;
int all;
int main()
{
// freopen("code.in", "r", stdin);
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d %d %d", &ticket[i].transport, &ticket[i].price, &ticket[i].time);
}
for (int i = 1; i <= n; i++)
{
if (ticket[i].transport == 0) // 如果是地铁
{
ticket[i].use = true;
all += ticket[i].price;
}
if (ticket[i].transport == 1) // 如果是公交车
{
for (int j = 1; j <= i - 1; j++)
{
if (ticket[j].use == false) // 如果已经废弃了,就直接跳过
{
continue;
}
else if (ticket[i].time - ticket[j].time > 45) // 判断时间是否符合条件
{
ticket[j].use = false;
continue;
}
else if (ticket[i].price > ticket[j].price) // 判断价格是否符合条件
{
continue;
}
ticket[j].use = true;
}
for (int j = 1; j <= i; j++)
{
if (ticket[j].use == true)
{
break;
}
if (j == i)
{
all += ticket[i].price;
}
}
}
}
printf("%d", all);
return 0;
}
麻烦回的时候 @ 一下,谢谢。