問題描述
試題編號: | 201812-1 |
試題名稱: | 小明上學 |
時間限制: | 1.0s |
內存限制: | 512.0MB |
問題描述: |
題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。爲了能儘可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。
問題描述 一次上學的路上,小明記錄下了經過每段路的時間,和各個紅綠燈在小明到達路口時的顏色和倒計時秒數。希望你幫忙計算此次小明上學所用的時間。
輸入格式 輸入的第一行包含空格分隔的三個正整數 r、y、g,表示紅綠燈的設置。這三個數均不超過 106。
輸出格式 輸出一個數字,表示此次小明上學所用的時間。
樣例輸入 30 3 30
樣例輸出 70
樣例說明 小明先經過第一段道路,用時 10 秒,然後等待 5 秒的紅燈,再經過第二段道路,用時 11 秒,然後等待 2 秒的黃燈和 30 秒的紅燈,再經過第三段、第四段道路,分別用時6、3秒,然後通過綠燈,再經過最後一段道路,用時 3 秒。共計 10 + 5 + 11 + 2 + 30 + 6 + 3 + 3=70 秒。
評測用例規模與約定 測試點 1, 2 中不存在任何信號燈。 |
C++實現:
#include<iostream>
using namespace std;
int main()
{
int r,y,g,n,k,t,s=0;
cin>>r>>y>>g; //輸入紅、黃、綠燈秒數
cin>>n; //輸入道路段數
if(n>100)
cout<<"error!!"<<endl;
for(int i=0;i<n;i++) //判斷每一個路口情況
{
cin>>k>>t;
if(k==0) //無交通燈
{
s+=t; //耗時t秒
}
else if(k==1) //遇到紅燈,等待
s+=t;
else if(k==2) //遇到黃燈,等待黃燈及紅燈
s=s+t+r;
else if(k==3) //遇到綠燈,直接通行
continue;
else
cout<<"error!"<<endl;
}
cout<<s<<endl;
}