Help with problem 1862B

Правка en1, от bluetuber, 2025-05-03 06:48:06

Here is the problem link. Although, I think pretty much understand the problem, I am getting wrong answer on the first test case even though I am allowed to output any possible sequence.

#include<bits/stdc++.h>
using namespace std;

void solve() {
    int n; cin >> n;
    vector<int> a(n);
    for(int i = 0 ; i < n ; i++) cin >> a[i];

    cout << 2*n-1 << endl;
    for(int i = 0 ; i < n ; i++){
        if(i == 0) cout << a[i] << " ";
        else cout << max(1, a[i]-1) << " " << a[i] << " ";
    }
    cout << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int t = 1; cin >> t;
    while (t--) solve();
}

The idea behind the solution is that since any a[i] in the original sequence 'a' can only be added if a[i-1] is less than equal to it I can greedily add a number less than or equal to b[i] before it in the final sequence 'b'. Help me understand faults in the logic/code.

Теги help me, beginner

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en1 Английский bluetuber 2025-05-03 06:48:06 1043 Initial revision (published)