Robotul Vasile s-a angajat la o fabrică de bomboane. El trebuie să ambaleze bomboanele în cutii. Toate bomboanele au formă dreptunghiulară. Două bomboane sunt de tipuri distincte dacă diferă prin cel puţin una dintre dimensiunile laturilor lor. Robotul determină dimensiunile bomboanelor (exprimate în milimetri) şi trebuie să ambaleze bomboanele în cutii astfel încât în orice cutie să existe exact câte o bomboană de fiecare tip.
Cerința
Scrieţi un program care citeşte dimensiunile bomboanelor şi rezolvă următoarele două cerinţe:
Robotul Vasile s-a angajat la o fabrică de bomboane. El trebuie să ambaleze bomboanele în cutii. Toate bomboanele au formă dreptunghiulară. Două bomboane sunt de tipuri distincte dacă diferă prin cel puţin una dintre dimensiunile laturilor lor. Robotul determină dimensiunile bomboanelor (exprimate în milimetri) şi trebuie să ambaleze bomboanele în cutii astfel încât în orice cutie să existe exact câte o bomboană de fiecare tip.
Cerința
Scrieţi un program care citeşte dimensiunile bomboanelor şi rezolvă următoarele două cerinţe:
1. determină numărul de tipuri distincte de bomboane;
2. determină numărul maxim de cutii de bomboane pe care robotul Vasile le poate obţine din bomboanele existente, respectând condiţiile din enunţ.
Date de intrare
Fișierul de intrare robot.in
conţine pe prima linie cerinţa c
care trebuie să fie rezolvată (1 sau 2). Pe a doua linie se află numărul natural n
, reprezentând numărul de bomboane. Pe următoarele n
linii se află dimensiunile bomboanelor, câte o bomboană pe o linie; o linie care descrie o bomboană conţine două numere naturale separate printr-un spaţiu lg1 lg2
, reprezentând lungimile laturilor bomboanei.
Date de ieșire
Fișierul de ieșire robot.out
va conţine o singură linie pe care va fi scris un număr natural determinat conform cerinţei c
.
Restricții și precizări
2 ≤ n ≤ 500 000
0 < lg1, lg2 < 100
- Bomboanele pot fi rotite atunci când sunt plasate în cutii.
- Pot exista şi bomboane de formă pătrată (în care cele două laturi au lungimi egale), un pătrat fiind un dreptunghi particular.
Exemplul 1:
robot.in
1 7 1 2 3 4 2 1 3 4 5 6 3 4 5 6
robot.out
3
Exemplul 2:
robot.in
2 7 1 2 3 4 2 1 3 4 5 6 3 4 5 6
robot.out
2
Explicație
Cele trei tipuri distincte de bomboane existente au dimensiunile 1 2
, 3 4
, 5 6
. Se pot obţine doar două cutii care să conţină câte o bomboană din fiecare tip.
#include <bits/stdc++.h> #define Inf 0x3f3f3f3f using namespace std; ifstream cin("robot.in"); ofstream cout("robot.out"); int cer , n , a[10005] , x , y; int main() { cin >> cer >> n; for(int i = 1 ; i <= n ; i++) { cin >> x >> y; a[min(x , y) * 100 + max(x , y)]++; } if(cer == 1) { int cnt = 0; for(int i = 100 ; i <= 10001 ; i++) if(a[i] != 0) cnt++; cout << cnt; } else { int mini = Inf; for(int i = 1 ; i <= 10001 ; i++) if(a[i] != 0 && a[i] < mini) mini = a[i]; cout << mini; } }