제출 #685721

#제출 시각아이디문제언어결과실행 시간메모리
685721Summers아름다운 순열 (IZhO12_beauty)C++14
0 / 100
93 ms262144 KiB
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
long long a[100], b[100], dp[(1<<21)][23], n;

long long rec(long long mask, long long last)
{
    if(mask==((1<<n)-1)) return 1;

    if(last!=-1 && dp[mask][last]!=-1)return dp[mask][last];
    long long an=0;
    for(long long i=0;i<n;i++)
    {
        if(!(mask&(1<<i)))
        {
            if(last==-1 || a[last]==a[i] || b[last]==b[i])
            {
                an+=rec(mask|(1<<i), i);
            }
        }
    }
    return dp[mask][last]=an;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    long long i,j,t,p,p1, ans=0;

    cin>>n;

    for(i=0;i<n;i++)
    {
        cin>>p;
        a[i]=__builtin_popcount(p);
        p1=p;
        while(p1>0)
        {
            if(p1%3==1)b[i]++;
            p1/=3;
        }

    }
    memset(dp,-1,sizeof(dp));
    ans+=rec(0,-1);

    cout<<ans<<endl;


}

컴파일 시 표준 에러 (stderr) 메시지

beauty.cpp: In function 'int main()':
beauty.cpp:31:17: warning: unused variable 'j' [-Wunused-variable]
   31 |     long long i,j,t,p,p1, ans=0;
      |                 ^
beauty.cpp:31:19: warning: unused variable 't' [-Wunused-variable]
   31 |     long long i,j,t,p,p1, ans=0;
      |                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...