/*C++版本第一题,模拟*/
#include<iostream> #include<vector> using namespace std; int main() { const int T =100; int n; cin>>n; vector<int> carweight(n,0); vector<int> time(n,0); vector<vector<int>> bridge(T,{100,80,60}); for(int i=0;i<n;i++){ cin>>carweight[i]; } for(int i=0;i<n;i++){ cin>>time[i]; } int ni=0; for(int i=0;i<T&&ni<n;i++) {//时刻点,从0到T,需要调度车辆小于n //小于61才需要调度,同时车辆到达时间小于等于当前时间i,就去遍历三个桥 if(time[ni]<61&&time[ni] <= i) { for(int j=0;j<3;j++) { if(bridge[i][j]>=carweight[ni]) { 可以走时,把这座桥之后的30分钟全部减掉,T>90,数组不会溢出,在笔试时可以设置1030 for(int k=i;k<i+30;k++) { bridge[k][j] -= carweight[ni]; } ni++; break; } } } } cout<<100-bridge[60][0]<<" "<<80-bridge[60][1]<<" "<<60-bridge[60][2]<<endl; return 0; }