//ej jak ktos z znajomych patrzy na moj kod po zakonczeniu potyczek to mam dla ciebie informacje //you just lost the game <3333 #include <algorithm> #include <iostream> #include <vector> #include <deque> using namespace std; bool is_sorted(const vector<int> &V){ bool t=true; for(int i=1; i<V.size(); i++) if(V[i]<V[i-1]) t=false; return t; } int main() { int n; cin>>n; vector<pair<int, int> > ludki(n); for(int i=0; i<n; i++){ int a; cin>>a; ludki[i]={a, i}; } sort(ludki.begin(), ludki.end()); vector<int> d(n); for(int i=0; i<n; i++) d[ludki[i].second]=i; // mamy ladniej jupiii vector<deque<int> > res; while(!is_sorted(d)){ deque<int> A; vector<bool> used(n); for(int i=0; i<n; i++){ if(d[i]!=i){ if(!used[i] && !used[d[i]]) { A.push_front(i+1); A.push_back(d[i]+1); used[d[i]]=true; used[i]=true; swap(d[i], d[d[i]]); } } } res.push_back(A); } cout<<res.size()<<'\n'; for(auto R : res){ cout<<R.size()<<'\n'; for(auto r : R) cout<<r<<' '; cout<<'\n'; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | //ej jak ktos z znajomych patrzy na moj kod po zakonczeniu potyczek to mam dla ciebie informacje //you just lost the game <3333 #include <algorithm> #include <iostream> #include <vector> #include <deque> using namespace std; bool is_sorted(const vector<int> &V){ bool t=true; for(int i=1; i<V.size(); i++) if(V[i]<V[i-1]) t=false; return t; } int main() { int n; cin>>n; vector<pair<int, int> > ludki(n); for(int i=0; i<n; i++){ int a; cin>>a; ludki[i]={a, i}; } sort(ludki.begin(), ludki.end()); vector<int> d(n); for(int i=0; i<n; i++) d[ludki[i].second]=i; // mamy ladniej jupiii vector<deque<int> > res; while(!is_sorted(d)){ deque<int> A; vector<bool> used(n); for(int i=0; i<n; i++){ if(d[i]!=i){ if(!used[i] && !used[d[i]]) { A.push_front(i+1); A.push_back(d[i]+1); used[d[i]]=true; used[i]=true; swap(d[i], d[d[i]]); } } } res.push_back(A); } cout<<res.size()<<'\n'; for(auto R : res){ cout<<R.size()<<'\n'; for(auto r : R) cout<<r<<' '; cout<<'\n'; } return 0; } |