rt
my code:
# include <bits/stdc++.h>
using namespace std;
// Part 1 主函数外定义部分
struct Ticket{
int price;
int last; // 最迟使用时间
bool used; // 判断是否使用
};
// Part 1.1 许久没干活的const干活了
const int N = 100001;
// Part 1.2 这是个优惠券盒子 希望别装的溢出来
Ticket yh[N];
int main(){
// Part 2 输入部分 && 主函数内定义部分
int n;
cin >> n;
bool bus_subway;
int t, pri, x = 0, y = 0; // Part 2.1 x和y是什么 懂得应该都懂 pri是每次输入的价格
int sum = 0; // Part 2.2 浅浅记录下钱钱的数量~
// Part 3 主体代码
for (int i = 1; i <= n; i++){
cin >> bus_subway >> pri >> t;
if (!bus_subway){
// Part 3.2 添加一张新票
y++;
yh[y].last = t + 45;
yh[y].price = pri;
yh[y].used = false;
sum += pri;
} else { // Part 3.3 公交的情况
bool can = false; // Part 3.4 能否使用优惠券
int new_x = x; // (记录一个新的x)
for (int j = 1; j <= y; j++){
if (yh[j].last < t){
// Part 3.4 如果该票已过期 就改变左端点的值
new_x = j;
continue;
}
if ((yh[j].price >= pri) && (!yh[j].used)){
can = true;
yh[j].used = true;
break;
}
}
// Part 3.5 刷新x的值
x = new_x;
// Part 3.6 刷新sum的值 如果can是true sum就加 0 * pri 反之加 1 * pri
sum += (!can) * pri;
}
}
// Part 4 华丽退场
cout << sum << endl;
return 0;
}
顺便说一声 别在意我的注释。