#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |