제출 #160895

#제출 시각아이디문제언어결과실행 시간메모리
160895MohamedAhmed04Longest beautiful sequence (IZhO17_subsequence)C++14
40 / 100
6058 ms88480 KiB
#include <bits/stdc++.h>
 
using namespace std ;
 
const int MAX = 1e5 + 10 ;
const int Middle = 1 << 10 ;
int arr[MAX] , arr2[MAX] , f[Middle][Middle][21] , prv[MAX] , dp[MAX] ;
 
int readInt () {
	bool minus = false;
	int result = 0;
	char ch;
	ch = getchar();
	while (true) {
		if (ch == '-') break;
		if (ch >= '0' && ch <= '9') break;
		ch = getchar();
	}
	if (ch == '-') minus = true; else result = ch-'0';
	while (true) {
		ch = getchar();
		if (ch < '0' || ch > '9') break;
		result = result*10 + (ch - '0');
	}
	if (minus)
		return -result;
	else
		return result;
}

void print(int now)
{
	if(now == 0)
		return ;
	print(prv[now]) ;
	printf("%d " , now) ; 
}

int main()
{
	int n = readInt() ;
	for(int i = 1 ; i <= n ; ++i)
		arr[i] = readInt() ;
	for(int i = 1 ; i <= n ; ++i)
		arr2[i] = readInt() ;
	int Max = 0 , en , vall , valr , x;
	for(int i = 1 ; i <= n ; ++i)
	{
		dp[i] = 1 ;
		vall = arr[i] & (Middle - 1);
        valr = arr[i] >> 10;
		for(int j = 0 ; j < Middle ; ++j)
		{
			x = __builtin_popcount((vall & j)) ;
			if(x > arr2[i])
				continue ;
			if(dp[f[j][valr][arr2[i] - x]] + 1 > dp[i])
				dp[i] = dp[f[j][valr][arr2[i] - x]] + 1 , prv[i] = f[j][valr][arr2[i] - x] ;
		}
		for(int j = 0 ; j < Middle ; ++j)
		{
			x = __builtin_popcount((valr & j)) ;
			if(dp[i] > dp[f[vall][j][x]])
				f[vall][j][x] = i ;
		}
		if(dp[i] > Max)
			Max = dp[i] , en = i ;
	}
	printf("%d\n" , Max) ;
	print(en) ;
	return 0 ;
}

컴파일 시 표준 에러 (stderr) 메시지

subsequence.cpp: In function 'int main()':
subsequence.cpp:35:7: warning: 'en' may be used uninitialized in this function [-Wmaybe-uninitialized]
  print(prv[now]) ;
  ~~~~~^~~~~~~~~~
subsequence.cpp:46:16: note: 'en' was declared here
  int Max = 0 , en , vall , valr , x;
                ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...