Submission #480792

# Submission time Handle Problem Language Result Execution time Memory
480792 2021-10-18T04:30:59 Z minhcool cmp (balkan11_cmp) C++17
Compilation error
0 ms 0 KB
#include "cmp.h"

#define set_bit bit_set
#define get_bit bit_get

void remember(int n) {
  //edit this
	set_bit(1 + (n >> 10) & 3);
	set_bit(5 + (n >> 8) & 15);
	set_bit(21 + (n >> 6) & 63);
	set_bit(85 + (n >> 4) & 255);
	set_bit(341 + (n >> 2) & 1023);
	set_bit(1365 + n & 4095);
}

int compare(int b) {
  //edit this
  	int l = 1, r = 6;
  	while(l < r){
  		int mid = (l + r) >> 1;
  		int pw = 1, sum = 0;
		for(int i = 1; i <= mid; i++){
			sum += pw;
			pw *= 4;
		}  		
		int temp = (b >> (12 - 2 * mid)) & (pw - 1);
		if(!get_bit(sum + temp)) l = mid + 1;
		else r = mid;
	}
	int tempor = (b >> (12 - 2 * mid)) & 3;
	if(tempor >= 2){
		for(int i = tempor + 1; i <= 3; i++){
			b += (1LL << (12 - 2 * mid));
			int sum = 0, pw = 1;
			for(int i = 1; i <= l; i++){
				sum += pw;
				pw *= 4;
			}
			int temp = (b >> (12 - 2 * mid)) & (pw - 1);
			if(get_bit(sum + temp)) return -1;
		}
		return 0;
	}
	else{
		for(int i = tempor - 1; i >= 0; i--){
			b -= (1LL << (12 - 2 * mid));
			int sum = 0, pw = 1;
			for(int i = 1; i <= l; i++){
				sum += pw;
				pw *= 4;
			}
			int temp = (b >> (12 - 2 * mid)) & (pw - 1);
			if(get_bit(sum + temp)) return 1;
		}
		return 0;
	}
	//return 0;
}

Compilation message

cmp.cpp: In function 'void remember(int)':
cmp.cpp:8:12: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
    8 |  set_bit(1 + (n >> 10) & 3);
      |          ~~^~~~~~~~~~~
cmp.cpp:9:12: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
    9 |  set_bit(5 + (n >> 8) & 15);
      |          ~~^~~~~~~~~~
cmp.cpp:10:13: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   10 |  set_bit(21 + (n >> 6) & 63);
      |          ~~~^~~~~~~~~~
cmp.cpp:11:13: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   11 |  set_bit(85 + (n >> 4) & 255);
      |          ~~~^~~~~~~~~~
cmp.cpp:12:14: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   12 |  set_bit(341 + (n >> 2) & 1023);
      |          ~~~~^~~~~~~~~~
cmp.cpp:13:15: warning: suggest parentheses around '+' in operand of '&' [-Wparentheses]
   13 |  set_bit(1365 + n & 4095);
      |          ~~~~~^~~
cmp.cpp: In function 'int compare(int)':
cmp.cpp:30:31: error: 'mid' was not declared in this scope
   30 |  int tempor = (b >> (12 - 2 * mid)) & 3;
      |                               ^~~