HihoCoder--1993--再买优惠

题目描述:
小Hi在饱了么外卖APP公司工作。最近他的老板交给他一项任务,完成"再买优惠"的功能。
这个功能是这样的:假设一家外卖店从低到高有N档满减优惠,依次是满A1元减B1元、满A2元减B2元、…… 、满AN元减BN元。用户当前总计购买了C元的外卖,则APP会提示"已减X元,再买Y元可减Z元"。其中Y元是距离下一档优惠的金额,特别的如果C>=AN,则只提示"已减X元"。
请你帮小Hi计算X, Y和Z的值。
输入描述:
第一行包含2个整数N和C。
以下N行,每行包含2个整数Ai, Bi。
1 <= N <= 20 1 <= C <= 1000000
A1 < A2 < A3 < … < AN B1 < B2 < B3 < … < BN
输出描述:
3个或1个整数代表答案
输入:
3 40
20 10
50 25
100 50
输出:
10 10 25
题意:
字面意思
题解
直接搞
代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int maxn = 100 + 5;
struct point{
    int a,b;
};

point arr[maxn];


int main(){
    int n,c;
    while(scanf("%d%d",&n,&c)!=EOF){
        for(int i = 1; i <= n; i ++){
            scanf("%d%d",&arr[i].a,&arr[i].b);
        }
        int cnt = 0;
        for(int i = 0; i < n; i ++){
            if(arr[i].a < c){
                cnt = i;
            }
            else break;
        }
        if(c >= arr[n].a){
            printf("%d\n",arr[n].b);
        }
        else if(cnt == 0){
            printf("%d %d %d\n",0,(arr[1].a - c),arr[1].b);
        }
        else{
            printf("%d %d %d\n",arr[cnt].b,(arr[cnt + 1].a - c),arr[cnt + 1].b);
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章