Guest User

Untitled

a guest
Mar 23rd, 2021
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <cassert>
  5. #include <set>
  6. using namespace std;
  7.  
  8. #define int long long
  9. const int mod = 1e9 + 7;
  10. const int INF = 1e10;
  11. const int N = 1e5 + 1;
  12.  
  13. int my_sol(vector <int> &v){
  14.  
  15.     int n = (int) v.size();
  16.  
  17.     set < int > s;
  18.     s.insert(v.front());
  19.  
  20.     for (int i = 1; i < n; i++){
  21.         int x = v[i];
  22.         auto put = s.upper_bound(x);
  23.         if (put == s.begin()){
  24.             s.insert(x);
  25.         }
  26.  
  27.         else {
  28.             put--;
  29.             s.erase(put);
  30.             s.insert(x);
  31.         }
  32.     }
  33.  
  34.     int ans = (int) s.size();
  35.     return ans;
  36. }
  37.  
  38. int brute(vector <int> v){
  39.     int ans = 0;
  40.     while (!v.empty()){
  41.         ans++;
  42.         vector <int> t;
  43.         int curr = v.front();
  44.         for (int i = 1; i < v.size(); i++){
  45.             if (v[i] > curr){
  46.                 curr = v[i];
  47.             }
  48.  
  49.             else t.push_back(v[i]);
  50.         }
  51.         v = t;
  52.     }
  53.     return ans;
  54. }
  55.    
  56.  
  57. signed main(){
  58.  
  59.     vector <int> v;
  60.     for (int i = 1; i < 11; i++){
  61.         sort(v.begin() , v.end());
  62.         v.push_back(i);
  63.         do {
  64.             if (brute(v) != my_sol(v)){
  65.                 for (auto &x : v){
  66.                     cout << x << ' ';
  67.                 }
  68.                 cout << endl;
  69.                 cout << "My code: " <<  my_sol(v) << endl;
  70.                 cout << "Brute force: " << brute(v) << endl;
  71.                 assert(brute(v) != my_sol(v));
  72.  
  73.             }
  74.         } while(next_permutation(v.begin() ,v.end()));
  75.     }
  76.  
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment