Cod sursa(job #3269366)

Utilizator Bolfa_DBolfa Diana Bolfa_D Data 18 ianuarie 2025 19:54:16
Problema Cuplaj maxim in graf bipartit Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>
#define NMAX 200050
using namespace std;
struct elem{
    int p;
    bool c;
    bool operator<(const elem &b)const{
        if(p!=b.p)
            return p<b.p;
        return c<b.c;
    }
};
int t, n, k,x,m,neg, nr;
long long Max;
int main()
{
    cin>>t;
    for(;t>0;--t)
    {
        cin>>n>>k;
        vector<elem>v;
        m=0;
        for(int i=1;i<=n;++i)
        {
            cin>>x;
            v.push_back({x,0});
        }
        for(int i=1;i<=n;++i)
        {
            cin>>x;
            v.push_back({x,1});
        }
        sort(v.begin(), v.end());

        int i=0;
        neg=0, nr=n;
        Max=n;
        while(i<v.size())
        {
            x=v[i].p;
            if(neg<=k && Max<1LL*x*nr)
                Max=1LL*x*nr;
            while(i<v.size() && v[i].p==x)
            {
                if(v[i].c==0)
                    ++neg;
                else
                {
                    --neg;
                    --nr;
                }
                ++i;
            }
        }
        cout<<Max<<'\n';
    }
    return 0;
}