Cerinţa
Se dau n
intervale [a,b]
, unde a
şi b
sunt numere întregi. Să se afişeze acele intervale care au proprietatea că intersecţia lor cu oricare dintre celelalte n-1
intervale este mulţimea vidă.
Date de intrare
Fişierul de intrare intervale.in
conţine pe prima linie numărul n
, iar pe următoarele n
linii câte două numere întregi, separate prin spaţii, reprezentând capetele unui interval.
Date de ieşire
Fişierul de ieşire intervale.out
va conţine pe prima linie numărul k
, reprezentând numărul de intervale care au proprietatea de mai sus. Urmează k
linii, fiecare conţinând câte două numere întregi – capetele intervalelor determinate. Intervalele se vor afişa în ordinea în care au fost date în fişierul de intrare.
Restricţii şi precizări
1 ≤ n ≤ 100
- pentru fiecare interval dat
[a,b]
,-30000 ≤ a , b ≤ 30000
Exemplu
intervale.in
4 8 16 17 20 2 6 10 15
intervale.out
2 17 20 2 6
#include <bits/stdc++.h> using namespace std; ifstream cin("intervale.in"); ofstream cout("intervale.out"); struct an { int i , j; }a[105]; int n , rez[105] , cnt; int main() { cin >> n; for(int i = 1 ; i <= n ; ++i) cin >> a[i].i >> a[i].j; for(int i = 1 ; i <= n ; ++i) { int ok = 0; for(int j = 1 ; j <= n ; ++j) if(i != j &&(a[i].i < a[j].j && a[i].j > a[j].i)) ok = 1; if(ok == 0) rez[++cnt] = i; } cout << cnt << "\n"; for(int i = 1 ; i <= cnt ; ++i) cout << a[rez[i]].i << " " << a[rez[i]].j << "\n"; return 0; }