Submission #163497

#TimeUsernameProblemLanguageResultExecution timeMemory
163497tselmegkhBeautiful row (IZhO12_beauty)C++14
0 / 100
2 ms376 KiB
#include<bits/stdc++.h> using namespace std; vector<int> binary[33], trinary[33]; vector<int> a; int n; bool same[25], block[25]; int count(int x){ int res = 0; while(x > 0){ if(x % 3 == 1){ res++; } x /= 3; } return res; } map<string, bool> calc; bool vis[(1 << 20)][21]; int solve(int i, int mask, string cur, int last){ if(i == n){ //cout << cur << '\n'; if(calc[cur])return 0; calc[cur] = 1; return 1; } int ans = 0; if(vis[mask][last])return 0; vis[mask][last] = 1; if(i == 0){ for(int j = 0; j < n; j++){ int curmask = mask | (1 << j); string tmp; tmp += a[j] + '0'; ans += solve(i + 1, curmask, tmp, j); } }else{ int binaryones = __builtin_popcount(a[last]), trinaryones = count(a[last]); for(int j = 0; j < binary[binaryones].size(); j++){ int k = binary[binaryones][j]; if(mask & (1 << k))continue; int curmask = mask | (1 << k); string tmp = cur; tmp += a[k] + '0'; ans += solve(i + 1, curmask, tmp, k); } for(int j = 0; j < trinary[trinaryones].size(); j++){ int k = trinary[trinaryones][j]; if(mask & (1 << k))continue; string tmp = cur; tmp += a[k] + '0'; int curmask = mask | (1 << k); ans += solve(i + 1, curmask, tmp, k); } } return ans; } int main(){ cin >> n; a.resize(n); for(int i = 0; i < n; i++){ cin >> a[i]; int cnt3 = count(a[i]), cnt2 = __builtin_popcount(a[i]); binary[cnt2].push_back(i); trinary[cnt3].push_back(i); } cout << solve(0, 0, "", -1) << '\n'; }

Compilation message (stderr)

beauty.cpp: In function 'int solve(int, int, std::__cxx11::string, int)':
beauty.cpp:41:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0; j < binary[binaryones].size(); j++){
                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
beauty.cpp:49:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0; j < trinary[trinaryones].size(); j++){
                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...