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