제출 #1364249

#제출 시각아이디문제언어결과실행 시간메모리
1364249jojeonghoonGrilled Bottle (KAISTRUN26SPRING_D)C++20
100 / 100
263 ms8672 KiB
#include <bits/stdc++.h>
#define ll long long
#define int ll
#define vi vector<int>
#define rep(i,s,e) for(int i=(s); i<=(e); i++)
#define arr2 array<int,2>
#define arr3 array<int,3>
using namespace std;

const int LM=200100;
int N,M, A[LM];
arr2 f[LM];

int Q(int n){
    vi a;
    rep(i,1,n) a.push_back(A[i]);
    sort(a.begin(),a.end(), greater<int>());

    int pv=N;
    for(int i:a){
        if(i<=f[pv][0]) pv--;
        else return 0;
    }

    return 1;
}

signed main() {
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>N>>M;

    rep(i,1,N){
        cin>>f[i][0]>>f[i][1];
    }
    sort(f+1,f+N+1);

    rep(i,1,M){
        cin>>A[i];
    }

    int low=0,hig=min(N,M);
    while(low<hig){
        int mid=low+hig+1>>1;
        if(Q(mid)) low=mid;
        else hig=mid-1;
    }
    
    M=low;

    sort(A+1,A+M+1);

    int ans=0;
    priority_queue<int> pq;
    int pv=N;
    for(int i=M; i>0; i--){
        for(; pv>0 && f[pv][0] >= A[i];pv--) pq.push(f[pv][1]);
        ans += pq.top(); pq.pop();
    }
    cout<<M<<" "<<ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…