题意:有n个早晨的班车和下午的班车,分配给司机,如果工作总时间超过d,超过的部分要给加班费;求最小的加班分花费。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 5 using namespace std; 6 7 int morning[101]; 8 int after[101]; 9 10 bool cmp1(int a,int b) 11 { 12 return a<b; 13 } 14 bool cmp2(int a,int b) 15 { 16 return a>b; 17 } 18 19 int main() 20 { 21 int n,d,r; 22 while(scanf("%d%d%d",&n,&d,&r)!=EOF) 23 { 24 if(n+d+r==0) 25 break; 26 for(int i=0;i<n;++i) 27 scanf("%d",&morning[i]); 28 for(int i=0;i<n;++i) 29 scanf("%d",&after[i]); 30 sort(morning,morning+n,cmp1); 31 sort(after,after+n,cmp2); 32 int sum=0; 33 for(int i=0;i<n;++i) 34 if (morning[i]+after[i]>d) 35 sum+=r*(morning[i]+after[i]-d); 36 printf("%d\n",sum); 37 } 38 return 0; 39 }