Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Marcin Knapik
- #include<bits/stdc++.h>
- #pragma GCC optimize("O3")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
- #pragma GCC optimize("Ofast")
- #pragma GCC optimize("unroll-loops")
- using namespace std;
- // #include <ext/pb_ds/assoc_container.hpp> // order_of_key
- // #include <ext/pb_ds/tree_policy.hpp> // find by order
- // using namespace __gnu_pbds;
- // #define ordered_set tree< pair<int, int> , null_type,less<pair<int, int>>, rb_tree_tag,tree_order_statistics_node_update>
- // const ll MAX_LL = 0xFFFFFFFFFFFFFFFF;
- // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- // #define losuj(a, b) uniform_int_distribution<ull>(a, b)(rng)
- typedef long double ld;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef pair<ll, ll> pll;
- typedef pair<int, int> ii;
- typedef vector<int> vi;
- typedef vector<ii> vii;
- typedef vector<vi> vvi;
- typedef vector<vector<ii>> vvii;
- typedef vector< ll > vll;
- typedef vector< pll > vpll;
- #define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
- #define sz(a) (int)(a).size()
- #define pb push_back
- #define all(c) (c).begin(), (c).end()
- #define rall(c) (c).rbegin(), (c).rend()
- #define REP(i, a, b) for (int i = (a); i <= (b); i++)
- #define FOR(i, a) for (int i = 0; i < (a); i++)
- #define TRAV(i, n) for(auto&i:n)
- #define beg(x) (*(x.begin()))
- #define re(x) int x; cin >>x;
- #define f first
- #define s second
- template <class T> inline bool setmin(T &a, T b){if (a > b)return a = b, 1;return 0;}
- template <class T> inline bool setmax(T &a, T b){if (a < b)return a = b, 1;return 0;}
- template<class T> inline T fast(T a,T b,T mod) {ll res = 1; while(b){if(b&1) res = (res*a)%mod;a = (a*a)%mod;b >>= 1;}return res;}
- template<class T> inline T russian(T a, T b, T mod) {ll res = 0; while(b){if(b&1) res = (res + a)%mod; a = (a+a)%mod; b>>=1;}return res;}
- template <class T> istream &operator>>(istream &os, vector<T> &container){for (auto &u : container)os >> u;return os;}
- template <class T> ostream &operator<<(ostream &os, const vector<T> &container){for (auto &u : container)os << u << " ";return os;}
- template<typename T> inline T gcd(T a, T b) { while (b)swap(a %= b, b); return a; }
- const ll INF = 1e9 + 7;
- const ll mod = 998244353;
- const ll BIG_INF = 1e18 + 7;
- const ll N = 1e6+7;
- const ll T = 1<<19;
- ll n, m, q;
- int tab[N];
- int main(){
- ios::sync_with_stdio(0);
- cin.tie(0);
- cin >> n;
- vi ans;
- FOR(i, n){
- int temp;
- cin >> temp;
- ans = {temp};
- tab[temp]++;
- }
- for(int i = 1; i < N; i++){
- if(tab[i] > 1){
- int suma = 0;
- int kon = i;
- while(tab[kon] > 1){
- suma += tab[kon];
- kon++;
- }
- kon--;
- vi temp = {};
- if(tab[i-1] > 0){
- temp.pb(i-1);
- }
- for(int j = i; j <= kon; j++){
- temp.pb(j);
- }
- if(tab[kon+1]){
- temp.pb(kon+1);
- }
- for(int j = kon; j >= i; j--){
- for(int k = 0; k < tab[j]-1; k++){
- temp.pb(j);
- }
- }
- if(sz(temp) > sz(ans)){
- ans = temp;
- }
- i = kon;
- }
- }
- if(sz(ans) == 1){
- for(int i = 1; i < N-4; i++){
- if(tab[i] && tab[i+1]){
- cout << 2 << '\n';
- cout << i << ' ' << i+1 << '\n';
- exit(0);
- }
- }
- }
- cout << sz(ans) << '\n';
- cout << ans << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement