关于#c++#的问题,请各位专家解答!

如果能用二分查找最好用二分查找

邮件收发室堆积了很多大小不一的邮件,小亮派小明要去邮件收发室找一些邮件。小明来到邮件收发室看到N件体积从小到大排列好的邮件。小亮一共询问小明M次,每次询问体积为K的邮件有多少件?

输入
第一行,两个正整数N、M,之间用空格隔开;
第二行,N个正整数,之间用一个空格隔开,表示N件邮件的体积;
第三行,M个正整数,表示M个询问,每次询问体积为K的邮件有多少件。

输出
一行M个正整数,之间用一个空格隔开,分别表示对应每次询问体积为K的邮件的数量,如果没有则输出0。

输入样例 1
5 2
2 3 3 4 5
3 4
输出样例 1
2 1

#include<iostream>
using namespace std;
int count(int t[],int n,int p)
{
    int j,counts=0;
    for(j=0; j<n; j++)
    {
        if(t[j]==p)
        {
            counts++;
        }
    }
    return counts;
}
int main()
{
    int n,m,j;
    cin >> n>>m;
    int t[n],k[m];
    for(j=0; j<n; j++)
        cin >> t[j];
    for(j=0; j<m; j++)
        cin >> k[j];
    for(j=0; j<m; j++)
        cout << count(t,n,k[j])<<" ";
    return 0;
}

#include<stdio.h>
//#include<main.h>

int main(void)
{
int *arr,*a;
int N,M,K,num;
//输入N M 分别为件数 次数
scanf("%d %d",&N,&M);
for(int i=0,i<N,i++)
{//输入件的大小
scanf("%d",&arr[i]);
}

for(int i=0,i<K,i++)
{//输入需求件的大小
scanf("%d",&i);

for(int i=0,i<M,i++)
{

if(arr[N]==K]
{a[i]++;
}
printf("%d %d",a[i]);
}
}