Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <climits>
- #include <cmath>
- using namespace std;
- int main(int argc, char const *argv[])
- {
- int size = 10*10*10*10*10*10 + 1;
- vector<int> optimos(size + 1, INT_MAX);
- optimos[1] = 1;
- for(int i = 0; i < binarios.size(); i++){
- int binario = binarios[i];
- for(int j = binario ; j + binario < size; j++){
- optimos[binario + j] = min(optimos[binario+j], 1 + optimos[j]);
- }
- }
- int n; cin >> n;
- string res = "";
- int pasos_original = optimos[n];
- while(n > 0){
- int pasos = optimos[n];
- for(int i = 0; binarios[i] < n; i++){
- int binario = binarios[i];
- if(optimos[n - binario] == pasos - 1){
- n = n - binario;
- res += to_string(binario) + " ";
- }
- }
- }
- cout << pasos_original << endl;
- cout << res << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement