Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <vector>
- using namespace std;
- int main()
- {
- int n, m, last_i = -1, x, h;
- bool flag = true;
- cin >> n >> m;
- vector <pair <int, int> > a;
- vector <int> b;
- for (int i = 0; i < m; i++)
- {
- cin >> x;
- a.push_back(make_pair(x, i + 1));
- }
- int j = 0;
- while (j < n && flag)
- {
- sort(a.begin(), a.end());
- if (j == n - 1)
- {
- h = m - 1;
- while (h >= 0)
- {
- if (a[h].first > 0 && a[h].second != last_i && a[h].second != b[0])
- {
- b.push_back(a[h].second);
- last_i = a[h].second;
- a[h].first--;
- break;
- }
- else
- if (h == 0)
- flag = false;
- h--;
- }
- }
- else
- {
- if (a[m - 1].first > 0 && a[m - 1].second != last_i)
- {
- b.push_back(a[m - 1].second);
- last_i = a[m - 1].second;
- a[m - 1].first--;
- }
- else
- if (m - 2 >= 0 && a[m - 2].first > 0 && a[m - 2].second != last_i)
- {
- a[m - 2].first--;
- b.push_back(a[m - 2].second);
- last_i = a[m - 2].second;
- }
- else
- {
- flag = false;
- break;
- }
- }
- j++;
- }
- if (flag == true && b[n - 1] == b[0])
- flag = false;
- if (flag)
- for (int i = 0; i < int(b.size()); i++)
- cout << b[i] << ' ';
- else
- cout << -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment