Advertisement
SuitNdtie

cat O(nlogmaxs)

May 8th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include<stdio.h>
  2. typedef long long int ll;
  3.  
  4. int main()
  5. {
  6.     int n;
  7.     scanf("%d",&n);
  8.     ll maxs = 0;
  9.     ll cats[n];
  10.     for(int i = 0 ; i < n ; i ++){
  11.         scanf("%lld",&cats[i]);
  12.         if(cats[i] > maxs)maxs = cats[i];
  13.     }
  14.    
  15.     ll L = 0 , R = maxs;
  16.     ll ans = 0;
  17.     while(L <= R){
  18.         ll M = (L+R)/2;
  19.         ll prev = -1;
  20.         bool check = true;
  21.         for(int i = 0 ; i < n && check ; i ++){
  22.             if(cats[i] <= M){
  23.                 continue;
  24.             }else{
  25.                 if(prev == -1){
  26.                     prev = cats[i];
  27.                 }else{
  28.                     if(cats[i] != prev){
  29.                         check = false;
  30.                     }
  31.                     prev = -1;
  32.                 }
  33.             }
  34.         }
  35.         if(check){
  36.             ans = M;
  37.             R = M - 1;
  38.         }else{
  39.             L = M + 1;
  40.         }
  41.     }
  42.     printf("%lld",ans);
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement