Submission #338490

# Submission time Handle Problem Language Result Execution time Memory
338490 2020-12-23T09:31:34 Z beksultan04 Beautiful row (IZhO12_beauty) C++14
0 / 100
3000 ms 172908 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define OK puts("OK");
#define NO puts("NO");
#define YES puts("YES");
#define fr first
#define sc second
#define ret return
#define scan1(a) scanf("%lld",&a);
#define scan2(a,b) scanf("%lld %lld",&a, &b);
#define scan3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c);
#define all(s) s.begin(),s.end()
#define allr(s) s.rbegin(),s.rend()
#define pb push_back
#define sz(v) (int)v.size()
#define endi puts("");
const int N = 1048579,INF=1e9+7;
int q[N],dp[N][21],tr[30],dv[30],g[50][50],n;
int troich(int x){
    int ans=0;
    while (x > 0){
        if (x%3==1)ans++;
        x /=3;
    }
    ret ans;
}
int dvoich(int x){
    int ans=0;
    while (x > 0){
        if (x%2==1)ans++;
        x /=2;
    }
    ret ans;
}
 
bool is(int a,int b){
    ret (tr[a] == tr[b] || dv[a] == dv[b]);
}
 
int rec(int x,int j){
    if (x == (1<<n)-1)ret 1;
    if (dp[x][j]!=-1)ret dp[x][j];
    int ans=0,i;
    for (i=0;i<n;++i){
        if (i == j || (x&(1<<i)) || g[i][j] == 0)continue;
        ans += rec(x+(1<<i),i);
    }
    ret dp[x][j]=ans;
}
 
 
main(){
  memset(dp,-1,sizeof dp);
    int i,j,s,cnt=1;
    scan1(n)
    for (i=0;i<n;++i){
        scan1(q[i])
        tr[i]=troich(q[i]);
        dv[i]=dvoich(q[i]);
    }
    for (i=0;i<n;++i){
        for (j=i+1;j<n;++j){
            if (is(i,j)){
                g[i][j]=1;
                g[j][i]=1;
            }
        }
    }
    int ans=0;
    for (i=0;i<n;++i){
        ans+=rec((1<<i),i);
    }
 
 
    cout <<ans;
 
 
 
 
}

Compilation message

beauty.cpp:54:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   54 | main(){
      |      ^
beauty.cpp: In function 'int main()':
beauty.cpp:56:13: warning: unused variable 's' [-Wunused-variable]
   56 |     int i,j,s,cnt=1;
      |             ^
beauty.cpp:56:15: warning: unused variable 'cnt' [-Wunused-variable]
   56 |     int i,j,s,cnt=1;
      |               ^~~
beauty.cpp:11:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   11 | #define scan1(a) scanf("%lld",&a);
      |                  ~~~~~^~~~~~~~~~~
beauty.cpp:57:5: note: in expansion of macro 'scan1'
   57 |     scan1(n)
      |     ^~~~~
beauty.cpp:11:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   11 | #define scan1(a) scanf("%lld",&a);
      |                  ~~~~~^~~~~~~~~~~
beauty.cpp:59:9: note: in expansion of macro 'scan1'
   59 |         scan1(q[i])
      |         ^~~~~
# Verdict Execution time Memory Grader output
1 Correct 83 ms 172652 KB Output is correct
2 Correct 83 ms 172652 KB Output is correct
3 Correct 92 ms 172652 KB Output is correct
4 Correct 84 ms 172652 KB Output is correct
5 Correct 85 ms 172652 KB Output is correct
6 Correct 87 ms 172652 KB Output is correct
7 Correct 83 ms 172780 KB Output is correct
8 Correct 83 ms 172816 KB Output is correct
9 Correct 99 ms 172652 KB Output is correct
10 Correct 84 ms 172652 KB Output is correct
11 Correct 93 ms 172652 KB Output is correct
12 Correct 92 ms 172780 KB Output is correct
13 Correct 153 ms 172652 KB Output is correct
14 Correct 507 ms 172780 KB Output is correct
15 Correct 614 ms 172756 KB Output is correct
16 Correct 431 ms 172908 KB Output is correct
17 Correct 547 ms 172780 KB Output is correct
18 Correct 361 ms 172840 KB Output is correct
19 Correct 2909 ms 172780 KB Output is correct
20 Execution timed out 3095 ms 172652 KB Time limit exceeded