Submission #84137

#TimeUsernameProblemLanguageResultExecution timeMemory
84137alextodoranDEL13 (info1cup18_del13)C++14
0 / 100
13 ms3008 KiB
#include <bits/stdc++.h>

#define NM 100002

using namespace std;

int t;

int n, k;

int p[NM], d[NM];

vector <int> op;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    cin >> t;
    while(t--)
    {
        cin >> n >> k;
        op.clear();
        p[0] = 0;
        p[k + 1] = n + 1;
        for(int i = 1; i <= k; i++)
            cin >> p[i];
        k++;
        for(int i = 1; i <= k; i++)
        {
            d[i] = p[i] - p[i - 1] - 1;
            if(d[i] == 0)
                d[i] = 0;
            else if(d[i] % 2 == 1)
            {
                for(int j = 1; j <= d[i] / 2; j++)
                    op.push_back(p[i - 1] + d[i] / 2 + 1);
                d[i] = 1;
            }
            else
            {
                for(int j = 1; j <= d[i] / 2 - 1; j++)
                    op.push_back(p[i - 1] + d[i] / 2 + 1);
                d[i] = 2;
            }
        }
        bool ok = 1;
        for(int i = 1; i <= k; i++)
        {
            int mi = min(d[i], d[i + 1]);
            for(int j = 1; j <= mi; j++)
                op.push_back(p[i]);
            d[i] -= mi;
            d[i + 1] -= mi;
            if(d[i] > 0)
            {
                ok = 0;
                break;
            }
        }
        if(ok == 0)
            cout << "-1\n";
        else
        {
            cout << op.size() << "\n";
            for(auto i : op)
                cout << i << " ";
            cout << "\n";
        }
    }
    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...
#Verdict Execution timeMemoryGrader output
Fetching results...