AcWing 5992. 封闭图形个数
原题链接
简单
作者:
最后五分钟
,
2025-04-05 23:39:31
· 江西
,
所有人可见
,
阅读 14
using namespace std;
const int N=2e5+10;
int m[10];
int a[N];
int A[N],B[N];
int sz1,sz2;
bool cmp(int a,int b)
{
int ta=a,tb=b;
sz1=sz2=0;
A[sz1++]=ta%10,ta/=10;
while(ta)A[sz1++]=ta%10,ta/=10;
B[sz2++]=tb%10,tb/=10;
while(tb)B[sz2++]=tb%10,tb/=10;
int res1=0,res2=0;
for(int i=sz1-1;~i;i--)
{
int x=A[i];
res1+=m[x];
}
for(int i=sz2-1;~i;i--)
{
int x=B[i];
res2+=m[x];
}
if(res1!=res2)return res1<res2;
else return a<b;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
m[1]=0,m[2]=0,m[3]=0,m[5]=0,m[7]=0,m[0]=1,m[4]=1,m[6]=1,m[9]=1,m[8]=2;
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
cout<<endl;
return 0;
}