Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2.  
  3. using namespace std;
  4.  
  5. int mod = 1000007;
  6. int main() {
  7. int n,k;
  8. cin >> n >> k;
  9. long long arr[n],from[n];
  10. for(int i = 0; i < n; i++)
  11. {
  12. arr[i] = 0;
  13. from[i] = 0;
  14. }
  15.  
  16. set<int> st;
  17. int temp;
  18. for(int i = 0; i < k; i++) { cin >> temp; st.insert(temp); }
  19.  
  20. //156
  21.  
  22. for(int i = 0; i < n; i++)
  23. {
  24. long long ans = -1;// = arr[i-1]+1;
  25. int fr = -1;//1;
  26. if(st.count(i+1)) { ans = 0; fr = i+1;}
  27. for(auto x : st)
  28. {
  29. if(i >= x) {
  30. if(ans == -1 || arr[i-x] < ans)
  31. {
  32. ans = arr[i-x];
  33. fr = x;
  34. }
  35. }
  36. }
  37. arr[i] = ans+1;
  38. from[i] = fr;
  39. }
  40.  
  41. stack<int> stack;
  42. cout << arr[n-1] << '\n';
  43. if(arr[n-1] == -1) return 0;
  44. int cur_pos = n-1;
  45. while(cur_pos >= 0)
  46. {
  47. stack.push(from[cur_pos]);
  48. cur_pos -= from[cur_pos];
  49. }
  50. while(stack.size() > 0)
  51. {
  52. cout << stack.top() << ' ';
  53. stack.pop();
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement