Advertisement
PedalaVasile

ShoeBox

Jan 15th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("shoebox.in");
  6. ofstream fout("shoebox.out");
  7.  
  8. int n, cerinta;
  9.  
  10. struct Cutie {
  11.     int L, l;
  12. };
  13.  
  14. bool Incape(Cutie A, Cutie B)
  15. {
  16.     return A.L <= B.L && A.l <= B.l;
  17. }
  18.  
  19. bool comp(Cutie A, Cutie B)
  20. {
  21.     return A.L < B.L || (A.L == B.L && A.l < B.l);
  22. }
  23.  
  24. vector < Cutie > Cutii;
  25.  
  26. vector < stack < Cutie > > v;
  27.  
  28. stack < Cutie > a;
  29.  
  30. int main()
  31. {
  32.     fin >> cerinta >> n;
  33.  
  34.     for (int i = 1; i <= n; i++)
  35.     {
  36.         int L, l;
  37.  
  38.         fin >> L >> l;
  39.  
  40.         Cutii.push_back({max(L, l), min(L, l)});
  41.     }
  42.  
  43.     sort(Cutii.begin(), Cutii.end(), comp);
  44.  
  45.     for (int i = 0; i < Cutii.size(); i++)
  46.     {
  47.         bool oke = false;
  48.  
  49.         for (int j = 0; j < v.size(); j++)
  50.         {
  51.             if (Incape(v[j].top(), Cutii[i]))
  52.             {
  53.                 v[j].push(Cutii[i]);
  54.                 oke = true;
  55.             }
  56.         }
  57.  
  58.         if (!oke)
  59.         {
  60.             stack < Cutie > a;
  61.             a.push(Cutii[i]);
  62.             v.push_back(a);
  63.         }
  64.     }
  65.  
  66.  
  67.     if (cerinta == 1)
  68.     {
  69.         size_t maxim = 0;
  70.  
  71.         for (int i = 0; i < v.size(); i++)
  72.             maxim = max(maxim, v[i].size());
  73.  
  74.         fout << maxim;
  75.  
  76.     }
  77.     else
  78.         fout << v.size();
  79.  
  80.  
  81.     fin.close();
  82.     fout.close();
  83.     return 0;
  84. }
  85.  
  86.  
  87. /*#include <bits/stdc++.h>
  88.  
  89. using namespace std;
  90.  
  91. ifstream fin("shoebox.in");
  92. ofstream fout("shoebox.out");
  93.  
  94. int n, cerinta;
  95.  
  96. struct Cutie {
  97.     int L, l;
  98. };
  99.  
  100. bool Incape(Cutie A, Cutie B)
  101. {
  102.     return A.L <= B.L && A.l <= B.l;
  103. }
  104.  
  105. bool comp(Cutie A, Cutie B)
  106. {
  107.     return A.L < B.L || (A.L == B.L && A.l < B.l);
  108. }
  109.  
  110. vector < Cutie > Cutii;
  111. vector < int > l[1005];
  112.  
  113. bitset < 1005 > viz;
  114.  
  115. queue < pair < int, int > > q;
  116.  
  117. int maxim = 1, rez = 0;
  118.  
  119. void BFS(int nod)
  120. {
  121.     int timp = 1;
  122.  
  123.     q.push({nod, timp});
  124.     viz[nod] = 1;
  125.  
  126.     while (!q.empty())
  127.     {
  128.         nod = q.front().first;
  129.         timp = q.front().second;
  130.         q.pop();
  131.  
  132.         maxim = max(maxim, timp);
  133.  
  134.         for (int vecin : l[nod])
  135.             if (!viz[vecin])
  136.             {
  137.                 q.push({vecin, timp + 1});
  138.                 viz[vecin] = 1;
  139.             }
  140.     }
  141. }
  142.  
  143. stack < int > stk;
  144.  
  145. void DFS(int nod)
  146. {
  147.     viz[nod] = 1;
  148. }
  149.  
  150. int main()
  151. {
  152.     fin >> cerinta >> n;
  153.  
  154.     for (int i = 1; i <= n; i++)
  155.     {
  156.         int L, l;
  157.  
  158.         fin >> L >> l;
  159.  
  160.         Cutii.push_back({max(L, l), min(L, l)});
  161.     }
  162.  
  163.     sort(Cutii.begin(), Cutii.end(), comp);
  164.  
  165.     for (int i = 0; i < Cutii.size() - 1; i++)
  166.         for (int j = i + 1; j < Cutii.size(); j++)
  167.             if (Incape(Cutii[j], Cutii[i]))
  168.                 l[i + 1].push_back(j + 1);
  169.  
  170.  
  171.     if (cerinta == 1)
  172.     {
  173.         for (int i = 1; i <= n; i++)
  174.             if (!viz[i])
  175.                 BFS(i);
  176.  
  177.         fout << maxim;
  178.     }
  179.     else
  180.     {
  181.         for (int i = 1; i <= n; i++)
  182.             if (!viz[i])
  183.             {
  184.                 rez++;
  185.                 DFS(i);
  186.             }
  187.  
  188.         fout << rez;
  189.     }
  190.  
  191.     fin.close();
  192.     fout.close();
  193.     return 0;
  194. }
  195. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement