Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Xóa số c++ giúp em với ạ

16:50 01-03-2022 1.412 lượt xem 1 bình luận

XÓA SỐ Cho hai dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑚) và 𝐵 = (𝑏1 , 𝑏2 , … , 𝑏𝑛 ) Hãy tìm các xóa đi một số ít nhất các phần tử trong hai dãy số trên để thu được hai dãy số mới thỏa mãn: không có giá trị số nguyên nào có mặt trong cả hai dãy. Chú ý: Dãy sau khi xóa có thể rỗng. Dữ liệu: Vào từ file văn bản DELNUM.INP  Dòng 1 chứa hai số nguyên dương 𝑚, 𝑛 ≤ 105  Dòng 2 chứa 𝑚 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑚 cách nhau bởi dấu cách (∀𝑖: 𝑎𝑖 ≤ 109 )  Dòng 3 chứa 𝑛 số nguyên dương 𝑏1 , 𝑏2 , … , 𝑏𝑛 cách nhau bởi dấu cách (∀𝑗: 𝑏𝑗 ≤ 10 9 ) Kết quả: Ghi ra file văn bản DELNUM.OUT một số nguyên duy nhất là số phần tử phải xóa Ví dụ DELNUM.INP                               DELNUM.OUT                

4 5 1 4 2 4 1 2 4 2 5                                                            3

#include <bits/stdc++.h>
using namespace std;
long long a[1000009],b[1000009],n,m,s=0;
int main()
{
    freopen("DELNUM.INP","r",stdin);
    freopen("DELNUM.OUT","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    map<long long, long long>L;
    map<long long, long long>C;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=m;i++)
    {
        cin>>b[i];
        C[b[i]]++;
    }
    sort(a+1,a+n+1);
    sort(b+1,b+m+1);
    int t,q;
    for(int i=1;i<=n;i++)
    {
        if(L[a[i]]==0)
        {
            t = (upper_bound(a+1,a+n+1,a[i])-lower_bound(a+1,a+n+1,a[i]));
            q = (upper_bound(b+1,b+m+1,a[i])-lower_bound(b+1,b+m+1,a[i]));
            if(t>=q)
            {
                s+=q;
            }else
            {
                s+=t;
            }
            L[a[i]]++;
        }

    }
    cout<<s;
}

code em làm ở đây sai ở phần nào và cần phải thêm những trường hợp nào ạ, giúp em với

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
LeVietCong đã bình luận 16:57 01-03-2022

DELNUM.INP: 

4 5

1 4 2 4

1 2 4 2 5

DELNUM.OUT

3

Câu hỏi mới nhất