Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <vector>
- #include <queue>
- #include <algorithm>
- #include <string>
- #include <stack>
- #include <set>
- #include <map>
- #define pii pair <int,int>
- using namespace std;
- using ll = long long;
- using ld = long double;
- /*
- Перебор:
- варианты, на каких осях меняем координаты (2^d)
-
- Варианты, чему равен r (очевидно, что r ограничен самой короткой осью – может, это можно как-то применить?)
-
- Варианты, на каких осях (+r), а на каких (-r).
- */
- void cv(vector <int> &v){
- for (auto x: v) cout<<x<<' ';
- cout<<"\n\n";
- }
- ll d;
- string two(int x, int sz){
- string r = "";
- while (x > 0){
- r += ((x % 2) + 48);
- x /= 2;
- }
- reverse(r.begin(), r.end());
- while (r.size() < sz){
- r = '0' + r;
- }
- return r;
- }
- vector <int> idx, now_axe;
- vector <int> axe;
- vector <int> qn; //queen
- bool gd(){
- }
- int main()
- {
- /*ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);*/
- cin>>d;
- axe.resize(d); for (auto &x: axe) cin>>x;
- qn.resize(d); for (auto &x: qn) cin>>x;
- string ch_axe;
- for (int msk = 1; msk < (1 << d) ;++msk ){
- ch_axe = two(msk, d);
- cout<<ch_axe<<'\n';
- idx.clear();
- now_axe.clear();
- for (int i = 0; i < d;++i){
- if (ch_axe[i] == '1'){
- idx.push_back(i);
- now_axe.push_back(axe[i]);
- }
- }
- cout<<"idx\n";
- cv(idx);
- cout<<"now_axe\n";
- cv(now_axe);
- //до куда двигаем r?
- int till = *min_element(now_axe.begin(), now_axe.end());
- //cout<<"till = "<<till<<"\n";
- cout<<"ch_r \n";
- for (int ch_r = 0; ch_r < (1 << idx.size()); ++ch_r){
- cout<<two(ch_r, idx.size())<<"\n";
- }
- cout<<"\n";
- }
- }
- /*
- 4
- 2 3 4 5
- 2 1 3 4
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement