估计他说的是 '\n' 的问题										
					
	
	
	
			
我就是真命天子,顺我者生,逆我者死!
程序代码:#include <stdio.h>
#include <stdlib.h>
int cmp(const void *pa,const void *pb)
{
    return *(int *)pa - *(int *)pb;
}
int main()
{   
    int m,n;
    while(scanf("%d%d",&n,&m) && (m||n))
    {       
        int i,j;
        int a[100005] = {0};
        int b[100005] = {0};
        for(i = 0;i<n;i++)
            scanf("%d",&a[i]);
        for(i = 0;i<m;i++)
            scanf("%d",&b[i]);
        qsort(a,n,4,cmp);
        qsort(b,m,4,cmp);
        i = j = 0;
        while(i<m && j<n)
        {
            if(b[i]<a[j])
                break;
            else if(b[i]>a[j])
                j++;
            else
            {i++;j++;}
        }
        if(i == m)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}对于这个题我表示很纠结  总结一下 发这个帖子的原因是 因为我看错了题 题目说是数据个数位100000 而不是数据范围
										
					
	
程序代码:#include<stdio.h>
#include<stdlib.h>
#define MAX    100000
int G[MAX], F[MAX], n, m;
int cmp(const void * a, const void * b)
{
    return *(int *)a - *(int *)b;
}
int work()
{
    int i, j;
    qsort(G, n, sizeof(int), cmp);
    qsort(F, m, sizeof(int), cmp);
    for(i = 0, j = 0; i < n && j < m;)
    {
        if(G[i] < F[j])
        {
            i++;
            continue;
        }
        else if(G[i] == F[j])
        {
            i++;
            j++;
            continue;
        }
        else break;
    }
    return j == m;
}
int main()
{
    int i;
    while(scanf("%d %d", &n, &m), n)
    {
        for(i = 0; i < n; scanf("%d", G + i++));
        for(i = 0; i < m; scanf("%d", F + i++));
        if(work()) printf("YES\n"); else printf("NO\n");
    }
    return 0;
}
										
					
	
程序代码:#include<stdio.h>
#include<stdlib.h>
#define MAX    100000
int G[MAX], GF[MAX][2], n, fn;
int cmp(const void * a, const void * b)
{
    return *(int *)a - *(int *)b;
}
void format()
{
    int i, j, k;
    qsort(G, n, sizeof(int), cmp);
    GF[0][0] = G[0];
    GF[0][1] = 1;
    for(i = 1, j = 0; i < n; i++)
    {
        if(G[i] == GF[j][0])
            GF[j][1]++;
        else
        {
            GF[++j][0] = G[i];
            GF[j][1] = 1;
        }
    }
    fn = j + 1;
}
int work(int s)
{
    int from, to, i;
    from = 0;
    to = fn - 1;
    while(from <= to)
    {
        i = (from + to) >> 1;
        if(GF[i][0] < s) from = i + 1;
        else if(GF[i][0] > s) to = i - 1;
        else
        {
            if(GF[i][1])
            {
                GF[i][1]--;
                return 1;
            }
            return 0;
        }
    }
    return 0;
}
int main()
{
    int i, s, m;
    while(scanf("%d %d", &n, &m), n)
    {
        for(i = 0; i < n; scanf("%d", G + i++));
        format();
        for(i = 0; i < m; i++)
        {
            scanf("%d", &s);
            if(!work(s)) break;
        }
        if(i == m)
            printf("YES\n");
        else
        {
            printf("NO\n");
            while(getchar() != '\n');
        }
    }
    return 0;
}
