题意
n个物品,你钱包有m张钱币,你每次拿钱包里的第一张钱按顺序去尝试买物品,直到所有物品都被尝试过或者钱都用过,问买了几个物品?
题解
i表示钱币,j表示物品,每次找到a[i]>=c[j],当i>=m或j>=n结束。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1005;
int n, m, c[MAXN], a[MAXN];
int main()
{
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++) scanf("%d", &c[i]);
for (int i = 0; i < m; i++) scanf("%d", &a[i]);
int ans = 0, j = 0;
for (int i = 0; i < m && j < n; i++, j++)
{
while (j < n && a[i] < c[j]) j++;
if (j >= n) break;
ans = i+1;
}
printf("%d\n", ans);
return 0;
}
/*
5 4
2 4 5 2 4
5 3 4 6
*/