제출 #137987

#제출 시각아이디문제언어결과실행 시간메모리
137987sebinkimBitwise (BOI06_bitwise)C++14
40 / 100
2 ms380 KiB
#include <bits/stdc++.h>

using namespace std;

int S[111], L[111], R[111];
int n, k, s;

bool check(int t)
{
	int i, j;
	bool f, ret;
	
	ret = 1;
	
	for(i=1, j=1; i<=k; i++){
		for(f=0; j<=S[i]; j++){
			if(L[j] & R[j] & t){
				L[j] -= t; R[j] -= t;
				f = 1;
			}
		}
		
		j = S[i - 1] + 1;
		
		for(; j<=S[i]; j++){
			if(R[j] & t){
				if(f) R[j] = t - 1;
				else f = 1;
			}
		}
		
		ret &= f;
	}
	
	for(i=1; i<=n; i++){
		if(R[j] & t){
			if(ret) L[j] = 0, R[j] -= t;
			else R[j] = t - 1;
		}
	}
	
	return ret;
}

int main()
{
	int i;
	
	scanf("%d%d", &n, &k);
	
	for(i=1; i<=k; i++){
		scanf("%d", S + i);
		S[i] += S[i - 1];
	}
	
	for(i=1; i<=n; i++){
		scanf("%d%d", L + i, R + i);
	}
	
	for(i=30; i>=0; i--){
		if(check(1 << i)){
			s |= 1 << i;
		}
	}
	
	printf("%d\n", s);
	
	return 0;
}

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

bitwise.cpp: In function 'int main()':
bitwise.cpp:49:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &n, &k);
  ~~~~~^~~~~~~~~~~~~~~~
bitwise.cpp:52:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", S + i);
   ~~~~~^~~~~~~~~~~~~
bitwise.cpp:57:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", L + i, R + i);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...