sicily 1093. Air Express

1093. Air Express

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

Fly It Today! (FIT), an air express company, charges different amounts for packages depending on their weight. For example, one set of rates may be:
                                      Package weight    Cost per pound
                                      0 to 9 pounds             $10
                                      10 to 49 pounds         $5
                                      50 to 99 pounds         $3
                                      100 pounds or more  $2
This rate structure has upset some customers who have realized that it costs less to ship a 10pound package ($50) than an 8 pound package ($80) and it costs less to ship a 100 poundpackage ($200) than a 90 pound one ($270). FIT wants to check packages to determine if the customer can pay a lower price by adding weight to the package. If this is the case, they want to know the minimum weight to be added to obtain the lowest price possible.

Input

The input file will have one or more data sets. Each data set begins with exactly 4 lines, giving the shipping rates. These will be:
weight1 rate1
weight2 rate2
weight3 rate3
rate4

You may assume all of these values are positive integers less than 1001 and weight1 < weight2 < weight3 . The values represent the rate table below:

There will then be 1 or more lines of customer package sizes. Each of these will be a positive integer less than 1001. The end of customer package sizes is indicated by the single integer 0.
The end of input will be indicated by end of file.

Output

For each input set, print the input set number. Then, for each of the customer package sizes in the input set, create a line of output formatted as follows:

Weight (<w>) has best price $<price> (add <p> pounds)
Where <w> is the weight of the customer package, as defined in the input set, <price> is the lowest price the customer can pay to send that package (with, optionally, added weight) based on the input set shipping rates, and <p> is the number of pounds to be added to the package to obtain the price (<p> must be greater than or equal to 0). If more than one different weight results in the best possible price, use the smaller weight.
Have a blank line after the output for each input set.

Sample Input

9 10
49 5
99 3
2
8
10
90
100
200
0
10 10
20 20
30 30
100
1
12
29
50
0

Sample Output

Set number 1:
Weight (8) has best price $50 (add 2 pounds)
Weight (10) has best price $50 (add 0 pounds)
Weight (90) has best price $200 (add 10 pounds)
Weight (100) has best price $200 (add 0 pounds)
Weight (200) has best price $400 (add 0 pounds)

Set number 2:
Weight (1) has best price $10 (add 0 pounds)
Weight (12) has best price $240 (add 0 pounds)
Weight (29) has best price $870 (add 0 pounds)
Weight (50) has best price $5000 (add 0 pounds)

题目分析

找最优差价,直接暴力比较

每个output后面加一个blank


#include <stdio.h>
#include <string.h>
int main()
{
  int wei1, rate1;
  int num = 1;
  while (EOF != scanf("%d%d", &wei1, &rate1)) {
    int wei2, rate2;
    int wei3, rate3;
    int rate4; 
    scanf("%d%d%d%d%d", &wei2, &rate2, &wei3, &rate3, &rate4);
    
    int a[100];
    memset(a, -1, sizeof(a));
    int count = 0;
    while (1) {
      scanf("%d", &a[count]);
      if (a[count] == 0)
        break;
      else
        ++count;
    }
    printf ("Set number %d:\n", num++);
    
    for (int i = 0; i < count; ++i) {
      printf("Weight (%d) has best price $", a[i]);
      int min=0;
      int jia=0;
      if (a[i] <= wei1) {
        min = a[i] * rate1;
        if (rate2 * (wei1 + 1) < min){
          min = rate2 * (wei1 + 1); 
          jia = wei1 + 1 - a[i];
        }
      } else if (wei1 < a[i] && a[i] <= wei2) {
        min = a[i] * rate2;
        if (rate3 * (wei2 + 1) < min) {
          min = rate3 * (wei2 + 1);
          jia = wei2 + 1 - a[i];
        }
      } else if (wei2 < a[i] && a[i] <= wei3) {
        min = a[i] * rate3;
        if (rate4 * (wei3 + 1) < min) {
          min = rate4 * (wei3 + 1);
          jia = wei3 + 1 - a[i];
        }
      } else if (a[i] > wei3) {
        min = a[i] * rate4;
        jia=0;
      }
      printf("%d (add %d pounds)\n", min, jia);
    }
    printf("\n");
  } 
  return 0;
}                                 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值