Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 300100;
  5. const int M = 1000100;
  6. const int oo = 2e9;
  7. const int PW = 20;
  8. const int md = int(1e9) + 7;
  9. bool cmp(int a,int b){
  10.     return a<b;
  11. }
  12.  
  13. int main()
  14. {
  15.     int n;
  16.     cin>>n;
  17.     vector<int> a(n);
  18.     vector<int> last_el(1);
  19.     vector<int> col(n);
  20.     for(int i=0;i<n;i++){
  21.         long long t;
  22.         cin>>t;
  23.         a[i]=t;
  24.     }
  25.     last_el[0]=-oo;
  26.     for(int i=0;i<n;i++){
  27.         long long length=last_el.end()-last_el.begin();
  28.         int h=lower_bound(last_el.begin(),last_el.end(),a[i],cmp)-last_el.begin();
  29.         if(h!=length){
  30.             if(h==length-1){
  31.                 last_el.push_back(a[i]);
  32.                 col[i]=h+2;
  33.             }
  34.             else{
  35.                 last_el[h+1]=a[i];
  36.                 a[i]=h+1;
  37.             }
  38.         }
  39.         else{
  40.             last_el[0]=a[i];
  41.             col[i]=1;
  42.         }
  43.     }
  44.     cout<<last_el.end()-last_el.begin()<<endl;
  45.     for(int i=0;i<n;i++){
  46.         cout<<col[i]<<" ";
  47.     }
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement