川のブログ

川の適当気ままなブログです。 

AOJ 0163 Highway Toll

こんにちは川です。

今回は、料金表と距離を使った計算をするだけの問題です。

 

ソースコード

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int distance[]={6,7,5,5,20,15},
money[6][6]={{300,500,600,700,1350,1650},{350,450,600,1150,1500},
{250,400,1000,1350},{250,850,1300},{600,1150},{500}};
    int time[2][3];
    while(cin>>time[0][0],time[0][0]){
        for(int i=1;i<3;i++)cin>>time[0][i];
        for(int i=0;i<3;i++)cin>>time[1][i];
        int num=0;
        for(int i=time[0][0];i<time[1][0];i++)num+=distance[i-1];
        bool kawa=0;
        for(int i=0;i<2&&!kawa&&num<41;i++)
if(time[i][1]==18||time[i][1]==17&&time[i][2]>29||
time[i][1]==19&&time[i][2]<31)kawa=1;
        num=money[time[0][0]-1][time[1][0]-time[0][0]-1];
        if(kawa){
            num/=2;
            if(num%50!=0)num+=25;
        }
        cout<<num<<endl;
    }
}