?? 2125.cpp
字號:
/* This Code is Submitted by wywcgs for Problem 2125 on 2005-10-15 at 17:37:46 */
#include <cstdio>
#include <algorithm>
#define MAX 128
using namespace std;
int course[MAX];
bool find(int, int, int);
int main()
{
int k, m, c, r, choseN, p;
int i, j;
bool pass;
while(scanf("%d", &k) == 1) {
if(k == 0) {
return 0;
} else {
scanf("%d", &m);
for(i = 0; i < k; i++) {
scanf("%d", &course[i]);
}
sort(course, course+k);
pass = true;
for(i = 0; i < m; i++) {
scanf("%d %d", &c, &r);
choseN = 0;
for(j = 0; j < c; j++) {
scanf("%d", &p);
if(pass && find(0, k-1, p)) {
choseN++;
}
}
if(choseN < r) {
pass = false;
}
}
if(pass) {
printf("yes\n");
} else {
printf("no\n");
}
}
}
return 0;
}
bool find(int a, int b, int tar)
{
int mid = (a + b) / 2;
if(course[a] == tar) {
return true;
} else if(course[b] == tar) {
return true;
} else if(course[mid] == tar) {
return true;
} else {
if(a == b) {
return false;
} else if(course[mid] < tar) {
return find(mid+1, b, tar);
} else {
return find(a, mid, tar);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -