NC54632. [CSP2019]公交换乘
描述
输入描述
输入文件的第一行包含一个正整数 𝑛,代表乘车记录的数量。
接下来的 𝑛 行,每行包含 3 个整数,相邻两数之间以一个空格分隔。第 𝑖 行的 第 1 个整数代表第 𝑖 条记录乘坐的交通工具,0 代表地铁,1 代表公交车;第 2 个 整数代表第 𝑖 条记录乘车的票价 ;第三个整数代表第 𝑖 条记录开始乘车的时 间 (距 0 时刻的分钟数)。
我们保证出行记录是按照开始乘车的时间顺序给出的,且不会有两次乘车记录出现 在同一分钟。
输出描述
输出文件有一行,包含一个正整数,代表小轩出行的总花费
示例1
输入:
6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135
输出:
36
说明:
第一条记录,在第 3 分钟花费 10 元乘坐地铁。示例2
输入:
6 0 5 1 0 20 16 0 7 23 1 18 31 1 4 38 1 7 68
输出:
32
说明:
第一条记录,在第 1 分钟花费 5 元乘坐地铁。C++(clang++11) 解法, 执行用时: 599ms, 内存消耗: 760K, 提交时间: 2020-10-31 21:06:49
#include<bits/stdc++.h> using namespace std; int n,a,b,c,i,s,t,A[100001],B[100001],f[100001]; int main() { for(cin>>n;n--;s+=a) { cin>>c>>a>>b; if(!c) { A[t]=a; B[t++]=b; }else { for(i=0;i<t;i++) if(b-B[i]<=45&&a<=A[i]&&!f[i]) { f[i]=1;s-=a;break; } } }cout<<s; }