#include <bits/stdc++.h> using namespace std; long long a,c[124],wl[123],w[123],ww,liczba,liczba2; int main() { cin>>a; for(int i=0; i<a; i++) { cin>>c[i]; w[i]=1000000000000000LL; } w[a]=10000000000000000LL; for(int i=1; i<(1<<a); i++) { if(__builtin_popcount(i)==1) { wl[1]++; w[1]=0; } else { ww=0; for(int z=0; z<a; z++) { liczba=(1<<z); for(int y=z+1; y<a; y++) { liczba2=(1<<y); if((liczba&i)!=0&&(liczba2&i)!=0) { // cout<<i<<" "<<z<<" "<<y<<endl; if(c[z]>c[y]) { ww++; } } } } if(ww<w[__builtin_popcount(i)]) { w[__builtin_popcount(i)]=ww; wl[__builtin_popcount(i)]=1; } else if(ww==w[__builtin_popcount(i)]) { wl[__builtin_popcount(i)]++; } } } for(int i=1; i<=a; i++) { cout<<w[i]<<" "<<wl[i]<<endl; } 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 56 | #include <bits/stdc++.h> using namespace std; long long a,c[124],wl[123],w[123],ww,liczba,liczba2; int main() { cin>>a; for(int i=0; i<a; i++) { cin>>c[i]; w[i]=1000000000000000LL; } w[a]=10000000000000000LL; for(int i=1; i<(1<<a); i++) { if(__builtin_popcount(i)==1) { wl[1]++; w[1]=0; } else { ww=0; for(int z=0; z<a; z++) { liczba=(1<<z); for(int y=z+1; y<a; y++) { liczba2=(1<<y); if((liczba&i)!=0&&(liczba2&i)!=0) { // cout<<i<<" "<<z<<" "<<y<<endl; if(c[z]>c[y]) { ww++; } } } } if(ww<w[__builtin_popcount(i)]) { w[__builtin_popcount(i)]=ww; wl[__builtin_popcount(i)]=1; } else if(ww==w[__builtin_popcount(i)]) { wl[__builtin_popcount(i)]++; } } } for(int i=1; i<=a; i++) { cout<<w[i]<<" "<<wl[i]<<endl; } return 0; } |