P8837 [传智杯 #3 决赛] 商店 题解
Double_Light · · 题解
一道简单的橙题
思路很简单,贪心+排序。
我们令
用两个变量分别指向轮到第几个人买和该卖第几样东西,再输出有几个人买到了东西即可。
不多说了,代码里有注释:
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,a[100005],b[100005],cnt,zz1=1,zz2=1;//zz1,zz2分别指向轮到第几个人买东西和该卖第几样东西
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>b[i];
sort(a+1,a+n+1);//对人们的钱数排序
sort(b+1,b+m+1);//对商品的价格排序
while(zz1<=n&&zz2<=m){//还有人没开始买且商品还没卖完
if(a[zz1]>=b[zz2]){//买的起
cnt++;//多了一个买得起商品的人
zz1++;//下一个人来买
zz2++;//卖下一件商品
}
else zz1++;//买不起就下一个人来买
}
cout<<cnt;
return 0;
}