数据过水
查看原帖
数据过水
766675
da_ke楼主2023/6/1 15:34
#include <bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define spe putchar(' ')
#define edl putchar('\n')
#define space ' '
// #define int long long
using db = double;
using ll = long long;
using ull = unsigned long long;
const int INF = 1 << 30;
const long long INFL = 1LL << 60;

const int N=2e4+24;

std::array <int,N> mons;
std::array <int,N> sdr;

int main(){
    std::ios::sync_with_stdio(false);
    int n,m;
    std::cin>>n>>m;
    rep(i,1,n)
        std::cin>>mons[i];
    rep(i,1,m)
        std::cin>>sdr[i];
    std::stable_sort(mons.begin()+1,mons.begin()+1+n);
    std::stable_sort(sdr.begin()+1,sdr.begin()+1+m);
    int ans=0;
    rep(i,1,n){
        int l=0,r=m+1;
        while(l+1<r){
            int mid=(l+r)>>1;
            if(sdr[mid]>=mons[i])
                r=mid;
            else
                l=mid;
        }
        if(sdr[r]<mons[i]){
            std::cout<<"you died!";
            return 0;
        }
        else ans+=sdr[r];
        sdr[r]=-1;
    }
    std::cout<<ans;
}

用了二分,但是不用二分貌似也能过!

2023/6/1 15:34
加载中...