제출 #137984

#제출 시각아이디문제언어결과실행 시간메모리
137984sebinkimBitwise (BOI06_bitwise)C++14
30 / 100
2 ms376 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, l;
	bool f, ret;
	
	ret = 1;
	
	for(i=1, j=1; i<=k; i++){
		for(l=j; l<=S[i]; l++){
			if(L[l] & R[l] & t){
				L[l] -= t; R[l] -= t;
				break;
			}
		}
		if(l <= S[i]){
			j = S[i] + 1;
			continue;
		}
		
		for(f=0; j<=S[i]; j++){
			if(R[j] & t){
				if(f) R[j] = t - 1;
				else{
					L[j] = 0; R[j] -= t;
					f = 1;
				}
			}
		}
		
		ret &= f;
		j = S[i] + 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:48: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:51:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", S + i);
   ~~~~~^~~~~~~~~~~~~
bitwise.cpp:56: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...