#include<bits/stdc++.h>
using namespace std;
int tab[45];
int mini[45];
int na_ile[45];
vector<int> v;
int zlicz()
{
int pom=0;
for(int x=0;x<v.size();x++)
for(int y=x+1;y<v.size();y++)
if(v[y]<v[x])
pom++;
return pom;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
for(int x=0;x<40;x++)
mini[x]=1e9+7;
int a;
cin>>a;
for(int x=0;x<a;x++)
cin>>tab[x];
int pom=(1<<a)-1;
while(pom!=0)
{
int xd=pom,where=0,ile=0,dd;
while(xd!=0)
{
if(xd%2==1)
v.push_back(tab[where]);
where++;
ile+=xd%2;
xd/=2;
}
dd=zlicz();
if(mini[ile]==dd)
na_ile[ile]++;
else if(mini[ile]>dd)
{
mini[ile]=dd;
na_ile[ile]=1;
}
pom--;
v.resize(0);
}
for(int x=1;x<=a;x++)
{
cout<<mini[x]<<" "<<na_ile[x]<<'\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 | #include<bits/stdc++.h> using namespace std; int tab[45]; int mini[45]; int na_ile[45]; vector<int> v; int zlicz() { int pom=0; for(int x=0;x<v.size();x++) for(int y=x+1;y<v.size();y++) if(v[y]<v[x]) pom++; return pom; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); for(int x=0;x<40;x++) mini[x]=1e9+7; int a; cin>>a; for(int x=0;x<a;x++) cin>>tab[x]; int pom=(1<<a)-1; while(pom!=0) { int xd=pom,where=0,ile=0,dd; while(xd!=0) { if(xd%2==1) v.push_back(tab[where]); where++; ile+=xd%2; xd/=2; } dd=zlicz(); if(mini[ile]==dd) na_ile[ile]++; else if(mini[ile]>dd) { mini[ile]=dd; na_ile[ile]=1; } pom--; v.resize(0); } for(int x=1;x<=a;x++) { cout<<mini[x]<<" "<<na_ile[x]<<'\n'; } return 0; } |
English