贪心算法
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 6 #define REP(n) for(int o=0;o<n;o++) 7 8 bool Do() { 9 const int maxn = 1005; 10 int N;//马的数量 11 int a[maxn];//渊子的马 12 int b[maxn];//对手的马 13 14 //数据读入 15 scanf("%d",&N); 16 if(N == 0) 17 return false; 18 19 REP(N) 20 scanf("%d",&a[o]); 21 REP(N) 22 scanf("%d",&b[o]); 23 24 //从小到大排序 25 sort(a,a + N); 26 sort(b,b + N); 27 28 int ans = 0; 29 int i = 0,j = 0; 30 while(1) { 31 while(a[i] <= b[j]) { 32 i++; 33 if(i >= N) 34 break; 35 } 36 if(i >= N) 37 break; 38 ans++; 39 i++; 40 if(i >= N) 41 break; 42 j++; 43 if(j >= N) 44 break; 45 } 46 printf("%s\n",2 * ans > N ? "YES" : "NO"); 47 return true; 48 } 49 50 int main() { 51 while(Do()); 52 return 0; 53 }