中级光能
4361 上学时间经验值:800
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
图图和小美都是勤奋的孩子,他们每天一大早就起来,洗漱完毕、吃过早饭,就匆匆赶到学校。牡丹小学的学区是A小区和B小区。具体位置见下图:
学生周一至周五早上分别从两个方向到学校上学。学校两边各有一个丁字路口,经常会堵车。如果开车,A小区和B小区过路口的平均时间分别为t1和t2;如果步行,A小区和B小区过路口的平均时间分别为t3和t4。学生可以选择让父母开车送自己去上学,也可以选择步行去上学。给出每一个学生的如下信息,住在哪个小区f,从小区到路口的开车时间t5,从路口到学校的开车时间t6,从小区到路口的步行时间t7,从路口到学校的步行时间t8。每个学生上学的总时间为:从小区到路口的时间+过路口的时间+从路口到学校的时间。请你统计六(1)班的n位同学从家出发到达学校的最短时间之和。
输入描述 Input Description
n+2行:第一行一个正整数n,表示人数;第二行四个正整数t1,t2,t3,t4;接下来的n行,每行五个正整数f,t5,t6,t7,t8,f=1表示住在A小区,f=2表示住在B小区。
输出描述 Output Description
一行:一个正整数,表示n位同学上学最短时间之和。
样例输入 Sample Input
2 20 18 3 2 1 5 7 20 26 2 6 6 10 9
样例输出 Sample Output
53
数据范围及提示 Data Size & Hint
第一位同学住在A小区,坐车去学校的时间:5+20+7=32分钟,步行去学校的时间:
20+3+26=49分钟,因此坐车时间较短,为32分钟。第二位同学住在B小区,坐车去学校的时间:
6+18+6=30分钟,步行去学校的时间:10+2+9=21分钟,因此步行时间较短,为21分钟。
两人上学最短时间为32+21=53分钟。
数据范围:
1<=n<=50,1<=t1,t2,t3,t4,t5,t6,t7,t8<=50,时间单位是分钟。
80分的WA代码:
#include<iostream>
using namespace std;
struct school{
int f,t5,t6,t7,t8,ans,pos;
}a[10335];
int n,sum,t1,t2,t3,t4;
int main(){
cin>>n;
cin>>t1>>t2>>t3>>t4;
for(int i=1;i<=n;i++){
cin>>a[i].f>>a[i].t5>>a[i].t6>>a[i].t7>>a[i].t8;
if(a[i].f==1){
a[i].ans=t1+a[i].t5+a[i].t6;
a[i].pos=t3+a[i].t7+a[i].t8;
if(a[i].ans>a[i].pos)sum+=a[i].pos;
else if(a[i].ans<a[i].pos)sum+=a[i].ans;
}
else if(a[i].f==2){
a[i].ans=t2+a[i].t5+a[i].t6;
a[i].pos=t4+a[i].t7+a[i].t8;
if(a[i].ans>a[i].pos)sum+=a[i].pos;
else if(a[i].ans<a[i].pos)sum+=a[i].ans;
}
}
cout<<sum;
return 0;
}