Enunt
Într-un laborator de analize chimice se utilizează N reactivi. Se ştie că, pentru a evita accidentele sau deprecierea reactivilor, aceştia trebuie să fie stocaţi în condiţii de mediu speciale. Mai exact, pentru fiecare reactiv x, se precizează intervalul de temperatură [minx, maxx] în care trebuie să se încadreze temperatura de stocare a acestuia.
Reactivii vor fi plasaţi în frigidere. Orice frigider are un dispozitiv cu ajutorul căruia putem stabili temperatura (constantă) care va fi in interiorul acelui frigider (exprimată într-un număr întreg de grade Celsius).
Cerința
Scrieţi un program care să determine numărul minim de frigidere necesare pentru stocarea reactivilor chimici.
Date de intrare
Fişierul de intrare reactivi.in conţine:
- pe prima linie numărul natural
N, care reprezintă numărul de reactivi; - pe fiecare dintre următoarele
Nlinii se aflămin max(două numere întregi separate printr-un spaţiu); numerele de pe liniax+1reprezintă temperatura minimă, respectiv temperatura maximă de stocare a reactivuluix.
Date de ieșire
Fişierul de ieşire reactivi.out va conţine o singură linie pe care este scris numărul minim de frigidere necesar.
Restricții și precizări
1 <= N <= 8000-100 <= minx <= maxx <= 100(numere întregi, reprezentând grade Celsius), pentru oricexde la1laN- un frigider poate conţine un număr nelimitat de reactivi
#include <bits/stdc++.h>
using namespace std;
ifstream in("reactivi.in");
ofstream out("reactivi.out");
struct reactive {
int mini, maxi;
} v[8005];
int n;
bool cmp(reactive a, reactive b) {
if(a.maxi == b.maxi) {
return a.mini < b.mini;
}
return a.maxi < b.maxi;
}
void solve() {
sort(v + 1, v + 1 + n, cmp);
int fridge = 1, ind = 1;
for(int i = 2; i <= n; i++) {
if(v[ind].maxi < v[i].mini) {
fridge++;
ind = i;
}
}
out << fridge;
}
int main()
{
in >> n;
for(int i = 1; i <= n; i++) {
in >> v[i].mini >> v[i].maxi;
}
solve();
return 0;
}