题目描述:
小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;
}