3342 2023. 02. 26 13:43:54 1478 Kombináció (50) cpp17 Elfogadva 50/50 3ms 3868 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second

int n, m;
vector<bool> is;
vector<bool> ans;

void solve() {
    cin >> n >> m;
    is.assign(1 + n, false);
    for(int i = 0; i < m; i++) {
        int x;
        cin >> x;
        is[x] = true;
    }
    ans.assign(1 + n, false);
    bool ok = false;
    for(int i = 1; i <= m; i++) {
        if(!is[i]) {
            ok = true;
        }
    }
    if(!ok) {
        for(int i = n; i >= n - m + 1; i--) {
            ans[i] = true;
        }
    } else {
        int pos = 0;
        for(int i = n; i >= 1; i--) {
            if(is[i] && !is[i - 1]) {
                ans = is;
                ans[i] = false;
                ans[i - 1] = true;
                pos = i;
                break;
            }
        }
        int cnt = 0;
        for(int i = pos; i <= n; i++) {
            if(ans[i]) {
                cnt++;
            }
            ans[i] = 0;
        }
        for(int i = n; i >= n - cnt + 1; i--) {
            ans[i] = 1;
        }
    }
    for(int i = 1; i <= n; i++) {
        if(ans[i]) {
            cout << i << " ";
        }
    }
    cout << "\n";
    ans.assign(1 + n, false);
    ok = false;
    for(int i = n; i >= n - m + 1; i--) {
        if(!is[i]) {
            ok = true;
        }
    }
    if(!ok) {
        for(int i = 1; i <= m; i++) {
            ans[i] = true;
        }
    } else {
        int pos = 0;
        for(int i = n; i >= 1; i--) {
            if(!is[i] && is[i - 1]) {
                ans = is;
                ans[i] = true;
                ans[i - 1] = false;
                pos = i + 1;
                break;
            }
        }
        int cnt = 0;
        for(int i = pos; i <= n; i++) {
            if(ans[i]) {
                cnt++;
            }
            ans[i] = 0;
        }
        for(int i = pos; i <= pos + cnt - 1; i++) {
            ans[i] = 1;
        }
    }
    for(int i = 1; i <= n; i++) {
        if(ans[i]) {
            cout << i << " ";
        }
    }
    cout << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1892 KiB
2 Elfogadva 0/0 3ms 2116 KiB
3 Elfogadva 2/2 3ms 2456 KiB
4 Elfogadva 2/2 3ms 2684 KiB
5 Elfogadva 2/2 3ms 2732 KiB
6 Elfogadva 2/2 3ms 2960 KiB
7 Elfogadva 2/2 3ms 3180 KiB
8 Elfogadva 2/2 3ms 3280 KiB
9 Elfogadva 2/2 3ms 3320 KiB
10 Elfogadva 4/4 3ms 3316 KiB
11 Elfogadva 4/4 3ms 3316 KiB
12 Elfogadva 4/4 3ms 3440 KiB
13 Elfogadva 4/4 3ms 3524 KiB
14 Elfogadva 4/4 3ms 3532 KiB
15 Elfogadva 4/4 3ms 3528 KiB
16 Elfogadva 6/6 3ms 3660 KiB
17 Elfogadva 6/6 3ms 3868 KiB