Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define dbg(i,j) cout<<"I am "<<i<<" = "<<endl<<j<<endl;
- #define dbr(name,a) cout<<name<<endl;for(auto x:a)cout<<x<<" ";cout<<endl;
- #define DBR(name,a) cout<<name<<endl;for(auto x:a){ for(auto y:x)cout<<y<<" ";cout<<endl;}
- #define dbmp(name,a) cout<<name<<endl;for(auto x:a){ cout<<x.first<<"\t"<<x.second<<endl;}
- #define dbp(name,a) cout<<name<<endl;cout<<a.first<<"\t"<<a.second<<endl;
- #define boost ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
- using namespace std;
- typedef long long int big;
- typedef long double fig;
- int main(){
- big n;
- cin>>n;
- vector<big> arr(n);
- unordered_map<big,big> count;
- for(big i=0;i<n;i++){
- cin>>arr[i];
- }
- big start=0,end=0,now=0,l=0;
- //set<big> diff;
- //big a=0,b=0,diff=0;
- for(big i=0;i<n;i++){
- count[arr[i]]++;
- // diff.insert(arr[i]);
- if(count[arr[i]]==1){
- now++;
- }
- while(now>2){
- //diff=abs(a-b);
- //a=0,b=0;
- //diff.erase(diff.begin());
- count[arr[l]]--;
- if(count[arr[l]]==0){
- now--;
- count.erase(arr[l]);
- }
- l++;
- }
- // dbr("diff",diff);
- // dbmp("count",count);
- if( i-l+1>=end-start+1){
- if(count.size()==0 || count.size()==1){
- end=i,start=l;
- }
- else if(count.size()==2){
- auto it1=count.begin();
- big a=it1->first;
- it1++;
- big b=it1->first;
- if(abs(a-b)<=1){
- end=i,start=l;
- }
- }
- }
- }
- for(big i=start;i<=end;i++){
- cout<<arr[i]<<" ";
- }
- cout<<endl;
- cout<<(end-start+1)<<endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment