Advertisement
Korotkodul

СПБГУ_C_1

Dec 25th, 2021 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int,int>
  11. using namespace std;
  12. using ll = long long;
  13. using ld = long double;
  14. /*
  15. Перебор:
  16.  варианты, на каких осях меняем координаты (2^d)
  17. Варианты, чему равен r (очевидно, что r ограничен самой короткой осью – может, это можно как-то применить?)
  18. Варианты, на каких осях (+r), а на каких (-r).
  19. */
  20. void cv(vector <int> &v){
  21.     for (auto x: v) cout<<x<<' ';
  22.     cout<<"\n\n";
  23. }
  24.  
  25. ll d;
  26.  
  27. string two(int x, int sz){
  28.     string r = "";
  29.     while (x > 0){
  30.         r += ((x % 2) + 48);
  31.         x /= 2;
  32.     }
  33.     reverse(r.begin(), r.end());
  34.     while (r.size() < sz){
  35.         r = '0' + r;
  36.     }
  37.     return r;
  38. }
  39. vector <int> idx, now_axe;
  40. vector <int> axe;
  41. vector <int> qn; //queen
  42.  
  43.  
  44.  
  45.  
  46. bool gd(){
  47. }
  48.  
  49. int main()
  50. {
  51.     /*ios::sync_with_stdio(0);
  52.     cin.tie(0);
  53.     cout.tie(0);*/
  54.     cin>>d;
  55.     axe.resize(d); for (auto &x: axe) cin>>x;
  56.     qn.resize(d); for (auto &x: qn) cin>>x;
  57.     string ch_axe;
  58.  
  59.     for (int msk = 1; msk < (1 << d) ;++msk ){
  60.         ch_axe = two(msk, d);
  61.         cout<<ch_axe<<'\n';
  62.         idx.clear();
  63.         now_axe.clear();
  64.         for (int i = 0; i < d;++i){
  65.             if (ch_axe[i] == '1'){
  66.                 idx.push_back(i);
  67.                 now_axe.push_back(axe[i]);
  68.             }
  69.         }
  70.         cout<<"idx\n";
  71.         cv(idx);
  72.         cout<<"now_axe\n";
  73.         cv(now_axe);
  74.         //до куда двигаем r?
  75.         int till = *min_element(now_axe.begin(), now_axe.end());
  76.         //cout<<"till = "<<till<<"\n";
  77.         cout<<"ch_r \n";
  78.         for (int ch_r = 0; ch_r < (1 << idx.size()); ++ch_r){
  79.             cout<<two(ch_r, idx.size())<<"\n";
  80.         }
  81.         cout<<"\n";
  82.     }
  83. }
  84. /*
  85. 4
  86. 2 3 4 5
  87. 2 1 3 4
  88. */
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement