Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int N = 5e5+5;
- int n, a[N], b[N], k = 1, id;
- bool nice;
- int main(){
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cin >> n;
- for(int i = 0; i < n; ++i)
- cin >> a[i];
- b[0] = 1;
- for(int i = 1; i < n; ++i){
- if(a[i]!=a[i-1]) k = 2, b[i] = 2-(!(b[i-1]%2));
- else b[i] = b[i-1], nice = true, id = i;
- }
- if(a[n-1]!=a[0]&&a[n-1]!=a[n-2]&&b[0]!=b[n-2]) b[n-1] = ++k;
- else if(a[n-1]!=a[0]&&b[n-1]==b[0]) k = 2, b[n-1] = 2-(!(b[0]%2));
- if(k==3&&nice){
- k = 2;
- b[id] = 2-!(b[id-1]%2);
- for(int i = id+1; i < n; ++i){
- if(a[i]!=a[i-1]) b[i] = 2-(!(b[i-1]%2));
- else b[i] = b[i-1];
- }
- if(a[n-1]!=a[0]&&a[n-1]!=a[n-2]&&b[0]!=b[n-2]) b[n-1] = ++k;
- else if(a[n-1]!=a[0]&&b[n-1]==b[0]) k = 2, b[n-1] = 2-(!(b[0]%2));
- }
- cout << k << endl;
- for(int i = 0; i < n; ++i)
- cout << b[i] << " ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement