记录编号 601500 评测结果 AAAAAAAAAA
题目名称 2980.绝世好题 最终得分 100
用户昵称 GravatarOTTF 是否通过 通过
代码语言 C++ 运行时间 0.166 s
提交时间 2025-06-25 15:01:37 内存使用 3.86 MiB
显示代码纯文本

#include <algorithm>
#include <cstdio>
#include <iostream>

using namespace std;

const int N = 114514;

int n;
int nums[N];
int basket[32];
int dp[N];
int res;

void ParseIn () {
	
	freopen ("bzoj_4300.in", "r", stdin);
	freopen ("bzoj_4300.out", "w", stdout);

	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> nums[i];
	}
	
}

void Core () {
	
	for (int i = 1; i <= n; i++) {
		dp[i] = 1;
		for (int j = 0; j < 31; j++) {
			if ((1 << j) & nums[i]) {
				dp[i] = max (dp[i], basket[j] + 1);
			}
		}
		for (int j = 0; j < 31; j++) {
			if ((1 << j) & nums[i]) {
				basket[j] = max (basket[j], dp[i]);
			}
		}
		res = max (res, dp[i]);
	}
	
}

void CWriteOut () {
	
	cout << res << endl;
	
}

int main () {
	
	ParseIn ();
	Core ();
	CWriteOut ();
	
	return 0;
}