fbpx

Problema #1373 – reactivi – Rezolvari PBInfo

de Mihai-Alexandru

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.

Exemplu

reactivi.in

3
-10 10
-2 5
20 50

reactivi.out

2

Explicație

Sunt necesare 2 frigidere pentru a stoca reactivii.

reactivi.in

4
2 5
5 7
10 20
30 40

reactivi.out

3

Explicație

Sunt necesare 3 frigidere pentru a stoca reactivii.

reactivi.in

5
-10 10
10 12
-20 10
7 10
7 8

reactivi.out

2

Explicație

Sunt necesare 2 frigidere pentru a stoca reactivii.

#include <bits/stdc++.h>

using namespace std;

ifstream cin("reactivi.in");
ofstream cout("reactivi.out");

struct elem
{
    int i , j;
};
elem a[8002];

int comp(elem a , elem b)
{
    return a.j > b.j || a.j == b.j && a.i < b.i;
}
int n , nr, fr[8002];

int main()
{
    cin >> n;
    for(int i = 1 ; i <= n ; i++)
    {
        cin >> a[i].i >> a[i].j;
        fr[i] = 1;
    }

    sort(a + 1 , a+ n + 1 , comp);

    for(int i = 1; i <= n - 1 ; i++)
      for(int j = i + 1 ; j <= n ; j++)
             if(fr[i] != 0 && fr[j] != 0)
                    if(a[i].j >= a[j].i && a[j].j >= a[i].i)
                    {
                        if(a[i].i < a[j].i) a[i].i = a[j].i;
                        if(a[i].j > a[j].j) a[i].j = a[j].j;
                        fr[i]++;
                        fr[j] = 0;
                    }
    for(int i = 1 ; i <= n ; i++)
      if(fr[i] >= 1)nr++;
    cout << nr;
    return 0;
}
Comentarii

S-ar putea sa iti placa