問題描述
試題編號: | 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 中不存在任何信號燈。 |
答題欄
#include<bits/stdc++.h>
using namespace std;
struct node
{
int flag;
int t;
}s[105];
int main()
{
int r, y , g;
scanf("%d%d%d",&r,&y,&g);
int n;
scanf("%d",&n);
for(int i = 1; i <= n ; i ++)
scanf("%d%d",&s[i].flag,&s[i].t);
int sum = 0;
for(int i = 1; i <= n ; i ++)
{
if(s[i].flag == 0)
sum += s[i].t;
else if(s[i].flag == 1) //表示紅燈
{
sum += s[i].t;
}else if(s[i].flag == 2) //表示黃燈
{
sum += s[i].t + r;
}
}
printf("%d\n",sum);
return 0;
}