(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #440771

#TimeUsernameProblemLanguageResultExecution timeMemory
440771training4usacoLongest beautiful sequence (IZhO17_subsequence)C++11
100 / 100
3860 ms47172 KiB
#include <iostream> #include <vector> #include <cstring> #include <algorithm> using namespace std; int main(){ int n; cin >> n; int a[n+1], k[n+1]; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= n; i++) { cin >> k[i]; } int popCnt[1024]; for (int i = 0; i < 1024; i++) { popCnt[i] = __builtin_popcount(i); } static int dp[1024][1024][11]; memset(dp, 0, sizeof(dp)); //at index i what is the longest chain you can form int best[n+1]; fill(best, best+n+1, 0); //at index i what is the first element in the longest //chain you can form so far int store[n+1]; for (int i = 1; i <= n; i++){ int right = a[i]&1023; int left = a[i]>>10; int idx = 0; for (int mask = 0; mask < 1024; mask++){ int b = k[i]-popCnt[(right&mask)]; if (b >= 0 and b <= 10) if (best[dp[left][mask][b]] > best[idx]) idx = dp[left][mask][b]; } best[i] = best[idx]+1; store[i] = idx; for (int mask = 0; mask < 1024; mask++){ int b = popCnt[(left&mask)]; if (best[i] > best[dp[mask][right][b]]) dp[mask][right][b] = i; } } int pos = max_element(best, best+n+1)-best; vector<int> res; while (pos != 0){ res.push_back(pos); pos = store[pos]; } reverse(res.begin(), res.end()); cout<<res.size()<<endl; for (int i = 0; i < res.size(); i++) cout<<res[i]<<" "; }

Compilation message (stderr)

subsequence.cpp: In function 'int main()':
subsequence.cpp:64:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |     for (int i = 0; i < res.size(); i++) cout<<res[i]<<" ";
      |                     ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...