#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; } |
English