Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- int mod = 1000007;
- int main() {
- int n,k;
- cin >> n >> k;
- long long arr[n],from[n];
- for(int i = 0; i < n; i++)
- {
- arr[i] = 0;
- from[i] = 0;
- }
- set<int> st;
- int temp;
- for(int i = 0; i < k; i++) { cin >> temp; st.insert(temp); }
- //156
- for(int i = 0; i < n; i++)
- {
- long long ans = -1;// = arr[i-1]+1;
- int fr = -1;//1;
- if(st.count(i+1)) { ans = 0; fr = i+1;}
- for(auto x : st)
- {
- if(i >= x) {
- if(ans == -1 || arr[i-x] < ans)
- {
- ans = arr[i-x];
- fr = x;
- }
- }
- }
- arr[i] = ans+1;
- from[i] = fr;
- }
- stack<int> stack;
- cout << arr[n-1] << '\n';
- if(arr[n-1] == -1) return 0;
- int cur_pos = n-1;
- while(cur_pos >= 0)
- {
- stack.push(from[cur_pos]);
- cur_pos -= from[cur_pos];
- }
- while(stack.size() > 0)
- {
- cout << stack.top() << ' ';
- stack.pop();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement