CSU 1559 订外卖

时间:2021-09-26 06:52:58

题目链接;http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82842#problem/E    订外卖

解题思路:定义两个数组,a[]表示满A,b[]表示减B,即满A-B表示为a[i]-b[i],x用来存储买一次外卖花的钱,将f赋一个比较大的值,将每输入的一次x与a[i]做对比后,再与b[i]做差值,并赋给j,再在j与f中取最小的,循环完后即是最优惠方案了。

程序代码:

 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
int a[],b[];
int main()
{
int t;cin>>t;
while(t--)
{
memset(a,,sizeof(a));
memset(b,,sizeof(b));
int n,i,m;
cin>>n>>m;
for( i=;i<n;i++)
scanf("%d%d",&a[i],&b[i]);
int sum=;
while(m--)
{
int j,x,f=;
scanf("%d",&x);
for( i=;i<n;i++)
if(x>=a[i]) { j=x-b[i]; if(j<f) f=j;}
if(f==)
sum=sum+x;
else sum=sum+f;
}
cout<<sum<<endl; }
return ;
}