Advertisement
mickypinata

TOI13: Cats

Nov 21st, 2020 (edited)
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long lli;
  5.  
  6. const int N = 2e6;
  7.  
  8. lli cats[N + 1];
  9. int nCats;
  10.  
  11. bool moveCats(lli m){
  12.     bool isPairing = false;
  13.     lli last = 0;
  14.     for(int i = 1; i <= nCats; ++i){
  15.         if(cats[i] > m){
  16.             if(!isPairing){
  17.                 isPairing = true;
  18.                 last = cats[i];
  19.             } else {
  20.                 if(cats[i] != last){
  21.                     return false;
  22.                 }
  23.                 isPairing = false;
  24.             }
  25.         }
  26.     }
  27.     return true;
  28. }
  29.  
  30. int main(){
  31.  
  32.     scanf("%d", &nCats);
  33.     lli mx = 0;
  34.     for(int i = 1; i <= nCats; ++i){
  35.         scanf("%lld", &cats[i]);
  36.         mx = max(mx, cats[i]);
  37.     }
  38.     lli l = 0;
  39.     lli r = mx;
  40.     lli ans = mx;
  41.     while(l <= r){
  42.         lli m = (l + r) / 2;
  43.         if(moveCats(m)){
  44.             ans = min(ans, m);
  45.             r = m - 1;
  46.         } else {
  47.             l = m + 1;
  48.         }
  49.     }
  50.     cout << ans;
  51.  
  52.     return 0;
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement