题意为从a中任取n个数和是否一定比b中任取n个数和大,可以将a和b按照从大到小排序,然后用suma储存a最小的n个数的和,如果suma比b最大的n个数的和还要大的话,就是必赢。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <vector>
#include <map>
#include <algorithm>
#include <queue>
#include <stack>
using namespace std;
int a[1010];
int b[1010];
int sizei = sizeof(int);
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int T;
while (~scanf("%d", &T)) {
while (T--) {
int m, n;
int i;
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < m; i++) {
scanf("%d", &b[i]);
}
qsort(a, m, sizei, cmp);
qsort(b, m, sizei, cmp);
int suma, sumb;
suma = sumb = 0;
for (i = 0; i < n; i++)
suma += a[i];
for (i = m - 1; i >= m - n; i--)
sumb += b[i];
if (suma > sumb)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}