105932024-04-06 11:47:24MagyarKendeSZLGKombináció (50)cpp17Elfogadva 50/503ms4488 KiB
// O(M)
#include <bits/stdc++.h>
using namespace std;

int N, M;

vector<int> after(vector<int> v) {
    for (int i = M - 1 ; i >= 0; i--) {
        if (v[i] < N - (M - i - 1)) {
            v[i]++;
            for (int j = i + 1; j < M; j++) {
                v[j] = v[i] + j - i;
            }
            return v;
        }
    }
    for (int i = 0; i < M; i++) {
        v[i] = i + 1;
    }
    return v;
}

vector<int> before(vector<int> v) {
    for (int i = M - 1 ; i > 0; i--) {
        if (v[i - 1] + 1 < v[i]) {
            v[i]--;
            for (int j = i + 1; j < M; j++) {
                v[j] = N - (M - j - 1);
            }

            return v;
        }
    }
    if (v[0] > 1) {
        v[0]--;
        for (int j = 1; j < M; j++) {
            v[j] = N - (M - j - 1);
        }
    } else {
        for (int i = 0; i < N; i++) {
            v[i] += N - M;
        }
    }
    return v;
}

int main() {
    cin.tie(0), ios::sync_with_stdio(0);

    cin >> N >> M;
    vector<int> v(M);
    for (int& x : v) cin >> x;
    
    for (int x : before(v)) cout << x << " ";
    cout << "\n";
    for (int x : after(v)) cout << x << " ";
    cout << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1828 KiB
2Elfogadva0/03ms2024 KiB
3Elfogadva2/23ms2236 KiB
4Elfogadva2/23ms2452 KiB
5Elfogadva2/23ms2668 KiB
6Elfogadva2/23ms2884 KiB
7Elfogadva2/23ms2976 KiB
8Elfogadva2/23ms3116 KiB
9Elfogadva2/23ms3340 KiB
10Elfogadva4/43ms3552 KiB
11Elfogadva4/43ms3636 KiB
12Elfogadva4/43ms3668 KiB
13Elfogadva4/43ms3876 KiB
14Elfogadva4/43ms4080 KiB
15Elfogadva4/43ms4316 KiB
16Elfogadva6/63ms4400 KiB
17Elfogadva6/63ms4488 KiB