Knobody

Untitled

Jun 20th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define dbg(i,j) cout<<"I am "<<i<<" = "<<endl<<j<<endl;
  3. #define dbr(name,a) cout<<name<<endl;for(auto x:a)cout<<x<<" ";cout<<endl;
  4. #define DBR(name,a) cout<<name<<endl;for(auto x:a){ for(auto y:x)cout<<y<<" ";cout<<endl;}
  5. #define dbmp(name,a) cout<<name<<endl;for(auto x:a){ cout<<x.first<<"\t"<<x.second<<endl;}
  6. #define dbp(name,a) cout<<name<<endl;cout<<a.first<<"\t"<<a.second<<endl;
  7. #define boost ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  8. using namespace std;
  9.  
  10. typedef long long int big;
  11.  
  12. typedef  long double fig;
  13.  
  14. int main(){
  15.     big n;
  16.     cin>>n;
  17.     vector<big> arr(n);
  18.     unordered_map<big,big> count;
  19.     for(big i=0;i<n;i++){
  20.         cin>>arr[i];
  21.     }
  22.     big start=0,end=0,now=0,l=0;
  23.     //set<big> diff;
  24.     //big a=0,b=0,diff=0;
  25.     for(big i=0;i<n;i++){
  26.         count[arr[i]]++;
  27.     //  diff.insert(arr[i]);
  28.         if(count[arr[i]]==1){
  29.             now++;
  30.         }
  31.         while(now>2){
  32.             //diff=abs(a-b);
  33.             //a=0,b=0;
  34.             //diff.erase(diff.begin());
  35.             count[arr[l]]--;
  36.             if(count[arr[l]]==0){
  37.                 now--;
  38.                 count.erase(arr[l]);
  39.             }
  40.             l++;
  41.         }
  42.     //  dbr("diff",diff);
  43.     //  dbmp("count",count);
  44.         if( i-l+1>=end-start+1){
  45.             if(count.size()==0 || count.size()==1){
  46.                 end=i,start=l;
  47.             }
  48.             else if(count.size()==2){
  49.                 auto it1=count.begin();
  50.                 big a=it1->first;
  51.                 it1++;
  52.                 big b=it1->first;
  53.                 if(abs(a-b)<=1){
  54.                     end=i,start=l;
  55.                 }
  56.             }
  57.            
  58.         }
  59.        
  60.        
  61.     }
  62.     for(big i=start;i<=end;i++){
  63.         cout<<arr[i]<<" ";
  64.     }
  65.     cout<<endl;
  66.     cout<<(end-start+1)<<endl;
  67.     return 0;
  68. }
Add Comment
Please, Sign In to add comment