Submission #376473

#TimeUsernameProblemLanguageResultExecution timeMemory
376473gustasonRabbit Carrot (LMIO19_triusis)C++14
14 / 100
1085 ms65500 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int n, m;
vector<int> ans;
int best = 100;
bool check(vector<int> a) {
    if (a[0] > m) return false;
    for(int i = 1; i < n; i++) {
        if (a[i] - a[i-1] > m) return false;
    }
    return true;
}
void go(int idx, vector<int> a, int changes) {
//    cout << idx << "\n";
    if (idx == n) {
        if (changes < best && check(a)) {
            best = changes;
        } else return;
        ans.resize(n);
        ans = a;
        return;
    }
    int i, k;
    if (idx == 0)
        i = 0;
    else
        i = a[idx-1];
    if (idx == n-1)
        k = 0;
    else
        k = a[idx+1];

    go(idx+1, a, changes);

    a[idx] = i + m;
    go(idx+1, a, changes+1);

    a[idx] = k - m;
    go(idx+1, a, changes+1);
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n >> m;
    vector<int> a(n);
    for(int i = 0; i < n; i++) {
        cin >> a[i];
    }
    go(0, a, 0);

    cout << best << "\n";
    for(int i : ans) {
        cerr << i << " ";
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...