AcWing 1162. 公交换乘
原题链接
简单
作者:
懒惰的蚩蚩
,
2024-10-04 00:40:22
,
所有人可见
,
阅读 5
这题并不难,10min左右写完了,一遍过
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 15;
int tt = 0, hh = -1;
struct node{
int price;
int tme;
}sub[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int ans = 0;
int n, w, p, t;
cin >> n;
while(n--) {
cin >> w >> p >> t;
if(w == 0) {
ans += p;
sub[++hh] = {p, t};
// cout << sub[hh].price << " " << sub[hh].tme << endl;
}else if(w == 1) {
while(hh >= tt && t - sub[tt].tme > 45) tt++;
int start = tt;
while(hh >= start && sub[start].price < p) start++;
if(sub[start].price >= p) sub[start].price = 0;
else ans += p;
}
}
cout << ans << endl;
return 0;
}