#include <stdio.h>
int get_max( const int arr[], const int n )
{
int min, max;
min = max = arr[ 0 ];
for( int i = 1; i < n; ++i )
{
for( int j = i - 5; j >= 0; --j )
{
int val = arr[ i ] ^ min;
if( max < val )
max = val;
if( min <= arr[ i ] )
break;
if( min > arr[ j ] )
min = arr[ j ];
if( max >= arr[ i ] + min )
break;
}
min = arr[ i ];
}
return max;
}
int main()
{
int n;
scanf( "%d", &n );
int arr[ n ];
for( int i = 0; i < n; ++i )
scanf( "%d", arr + i );
printf( "%d\n", get_max( arr, n ) );
return 0;
}
이렇게 조건을 두 개 줄일 수 있음.
논리적으로 따지면 더 줄일 수 있을것 같은데 귀찮.
int arr[n]; 이거 언제부터 가능해진 거예요? - 엔타로 하스켈!