Submission #35049

#TimeUsernameProblemLanguageResultExecution timeMemory
35049model_codeLongest beautiful sequence (IZhO17_subsequence)C++14
23 / 100
6000 ms8068 KiB
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>

using namespace std;

const int maxn = (int)(1e5 + 111);

int n, a[maxn], k[maxn], dp[maxn], p[maxn], cnt[(1 << 20) + 111];
int b[maxn], m;

int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; ++i)
		scanf("%d", &a[i]);		
	for (int i = 0; i < n; ++i)
		scanf("%d", &k[i]);

	for (int i = 0; i < n; ++i) {
		dp[i] = 1;
		p[i] = -1;
	}

	for(int i = 0; i < (1<<20); i++)
		cnt[i] = __builtin_popcount(i);

	int q = 0, ans = 0;

	for (int i = 0; i < n; ++i)
	for (int j = 0; j < i; ++j)
		if (cnt[a[j] & a[i]] == k[i] && dp[i] < dp[j] + 1) {
			dp[i] = dp[j] + 1;
			p[i] = j;
		}

	for (int i = 0; i < n; ++i)
		if (dp[i] > ans) {
			ans = dp[i];
			q = i;
		}


	while (q != -1) {
		b[m++] = q + 1;
		q = p[q]; 	
	}

	reverse(b, b + m);

	printf("%d\n", m);
	for (int i = 0; i < m; ++i)
			printf("%d ", b[i]);

	return 0;
}








Compilation message (stderr)

subsequence.cpp: In function 'int main()':
subsequence.cpp:20:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
subsequence.cpp:22:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i]);  
                     ^
subsequence.cpp:24:21: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &k[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...