NO.1
单纯的傻傻的代码:
#include<stdio.h>
long long num[100000005]={0};
int main(){
int n, m, k;
scanf("%d%d",&n,&m);
while(n--){
scanf("%d",&k);
num[k]++;
}
while(m--){
scanf("%d",&k);
if(num[k]!=0) printf("YES\n");
else printf("NO\n");
}
return 0;
}
NO.2
愤怒的,利用STL向量的代码:
#include<cstdio>
#include<vector>
using namespace std;
int main(){
vector<int> num;
int n, m, k;
scanf("%d%d",&n,&m);
while(n--){
scanf("%d",&k);
num.push_back(k);
}
while(m--){
scanf("%d",&k);
for(n=0;n<num.size();n++){
if(num.at(n)==k){
k=-1;
break;
}
}
if(k==-1) printf("YES\n");
else printf("NO\n");
}
return 0;
}
NO.3.
无奈的去寻求帮助后的代码(AC):
# include<stdio.h>
# include<stdlib.h>
int a[1000001];
int comp(const void * p1,const void * p2)
{
return *(int *)p1-*(int *)p2;
}
int search(int i,int j,int n)
{
int mid;
while(i<j)
{
mid = i+(j-i)/2;
if(a[mid] == n) return 1;
else if(a[mid]>n) j = mid;
else i = mid+1;
}
return 0;
}
int main(void)
{
int n,m,i,t;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
qsort(a,m,sizeof(int),comp);
for(i=0;i<n;i++)
{
scanf("%d",&t);
printf(search(0,m-1,t)?"YES\n":"NO\n");
}
return 0;
}
居然是用qsort排序,加二分法,哇啊啊啊,好吧,败了