Submission #1322089

#TimeUsernameProblemLanguageResultExecution timeMemory
1322089khoianhcmp (balkan11_cmp)C++20
0 / 100
475 ms85868 KiB
#include<bits/stdc++.h>
#include 	"cmp.h"
using namespace std;
typedef long long ll;

const int mn = 1e5 + 5;
ll p[5] = {0, 
	(1 << 3),
	(1 << 3) + (1 << 6),
	(1 << 3) + (1 << 6) + (1 << 9)};

//ll wow[mn];
//void bit_set(ll a){
//	assert(wow[a] == 0);
//	cout << "set " << a << "\n";
//	wow[a] = 1;
//}
//
//ll bit_get(ll a){
//	cout << "get " << a << "\n";
//	return wow[a];
//}

ll hehe(ll a, ll k){
//	cout << a << " " << (a % (1 << k)) << " " << (9 - (k - (k % 3))) / 3 << "\n";
	return a - (a % (1 << (k - (k % 3)))) + p[(9 - (k - (k % 3))) / 3] + 1;
}

ll haha(ll a, ll k){
//	cout << "call " << a << " " << k << "\n";
	return bit_get(hehe(a, k));
}

void remember(int a){
	for(int i = 9; i >= 0; i -= 3){
		bit_set(hehe(a, i));
	}
}

int compare(int b){
	if(!haha(b, 3)){
		if(haha(b, 6)){
			if(haha(b ^ (1 << 3), 3)){
				if(b > (b ^ (1 << 3))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 4), 4)){
				if(b > (b ^ (1 << 4))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 4) ^ (1 << 3), 4)){
				if(b > (b ^ (1 << 3) ^ (1 << 4))) return 1;
				return -1;
			}
			if(b > (b ^ (1 << 5))) return 1;
			return -1;
		} 
		if(haha(b, 9)){
			if(haha(b ^ (1 << 6), 6)){
				if(b > (b ^ (1 << 6))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 7), 7)){
				if(b > (b ^ (1 << 7))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 7) ^ (1 << 6), 7)){
				if(b > (b ^ (1 << 6) ^ (1 << 7))) return 1;
				return -1;
			}
			if(b > (b ^ (1 << 8))) return 1;
			return -1;
		} else {
			if(haha(b ^ (1 << 9), 9)){
				if(b > (b ^ (1 << 9))) return 1;
				return -1;
			}
			cout << (b ^ (1LL << 10)) << "wowie\n";
			if(haha(b ^ (1 << 10), 10)){
				if(b > (b ^ (1 << 10))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 10) ^ (1 << 9), 10)){
				if(b > (b ^ (1 << 10) ^ (1 << 9))) return 1;
				return -1;
			}
			cout << "???";
			if(b > (b ^ (1 << 11))) return 1;
			return -1;
			
		}
	} else {
		if(!haha(b, 0)){
			if(haha(b ^ (1 << 0), 0)){
				if(b > (b ^ (1 << 0))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 1), 1)){
				if(b > (b ^ (1 << 1))) return 1;
				return -1;
			}
			if(haha(b ^ (1 << 1) ^ (1 << 0), 1)){
				if(b > (b ^ (1 << 0) ^ (1 << 1))) return 1;
				return -1;
			}
			if(b > (b ^ (1 << 2))) return 1;
			return -1;
		} else {
			return 0;
		}
	}
}

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//
//int main(){
//	ios_base::sync_with_stdio(false);
//	cin.tie(NULL);
//	if(fopen(".INP", "r")) {
//		freopen(".INP", "r", stdin);
//		freopen(".OUT", "w", stdout);
//	}
//	int testCase = 1;
//	//cin >> testCase;
//	while(testCase--){
////		ll a = rng() % 4096, b = rng() % 4096;
//		ll a = 843, b = 1530;
//		remember(a);
////		compare(b);
//		cout << a << " " << b << " " <<  compare(b);
//	}
//}
#Verdict Execution timeMemoryGrader output
Fetching results...