5. 等红绿灯
题目ID:20028必做题100分
最新提交:
Wrong Answer
0 分
历史最高:
Wrong Answer
0 分
时间限制: 1000ms
空间限制: 524288kB
题目描述
【问题描述】
小明是一个刚拿了驾照的司机,今天是他第一次开车上路。小明在公路上开车每秒中行驶距离为4。遇到红灯要停下来,等红灯变绿了才可以开车上路。现在小明从家出发,想要开车出去玩。路上一共有n个红绿灯,每个红绿灯之间距离不等,但红绿灯的时间是一样的,红灯30秒,绿灯15秒。现在请编写一个程序来帮助小明计算从家出发,通过这些红绿灯需要多少时间。
输入:
第一行为n表示有n个红绿灯。
第二行为n个红绿灯的之间的距离(第一个红绿灯为距离小明家的距离)
随后n行每行两个数,第一个数表示红绿灯当前的状态,1表示红灯,2表示绿灯。第二个数表示当前灯的状态下已经经过了多少秒
输出
输出经过了多少秒。(所有数据均为整数,无需考虑小数)
【样例输入】
3
100 200 300
1 0
2 13
1 10
【样例输出】
155
【数据要求】
n不超过10,其他数据均不超过1000
代码有没有?
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[n+5],sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i]/4;
}
int x[n+5],y[n+5];
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
for(int i=1;i<=n;i++){
a[i]/=4;
if(x[i]==1){
if(30-y[i]<=a[i]) continue;
else sum=sum+30-y[i]-a[i];
}
if(x[i]==2){
if(15-y[i]<a[i]) sum=sum+30-(y[i]+a[i]-15);
else continue;;
}
}
cout<<sum;
return 0;
}
第21课模拟的拓展题单第5题