제출 #1279789

#제출 시각아이디문제언어결과실행 시간메모리
1279789SSKMFExhibition (JOI19_ho_t2)C++20
0 / 100
1 ms572 KiB
#include <bits/stdc++.h>
using namespace std;

priority_queue <int> candidati;
int limita[100001] , stiva[100001];
pair <int , int> sir[100001];

int main ()
{
    ios :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    int cantitate , lungime;
    cin >> cantitate >> lungime;

    for (int indice = 1 ; indice <= cantitate ; indice++)
        { cin >> sir[indice].first >> sir[indice].second; }
    
    for (int indice = 1 ; indice <= lungime ; indice++)
        { cin >> limita[indice]; }

    sort(sir + 1 , sir + cantitate + 1);
    sort(limita + 1 , limita + lungime + 1);

    for (int indice = 1 , ramas = 1 ; indice <= lungime ; indice++)
    {
        while (ramas <= cantitate && sir[ramas].first <= limita[indice])
            { candidati.push(-sir[ramas++].second); }

        if (!candidati.empty())
        {
            const int luat = -candidati.top();
            candidati.pop();

            if (luat >= stiva[stiva[0]])
                { stiva[++stiva[0]] = luat; }
            else
            {
                int stanga = 1 , dreapta = stiva[0] - 1;
                while (stanga <= dreapta)
                {
                    const int mijloc = (stanga + dreapta) >> 1;
                    if (stiva[mijloc] <= luat) { stanga = mijloc + 1; }
                    else { dreapta = mijloc - 1; }
                }

                stiva[stanga] = luat;
            }
        }
    }

    cout << stiva[0];
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...