| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1299430 | Sofiatpc | 비교 (balkan11_cmp) | C++20 | 3606 ms | 96156 KiB |
#include "cmp.h"
#include <bits/stdc++.h>
using namespace std;
#define sz(v) (int)v.size()
void remember(int n) {
int base = 4;
vector<int> dig;
int x = n;
for(int j = 0; j < 6; j++){
dig.push_back(x%4);
x/=4;
//cout<<dig[j]<<" ";
}//cout<<"\n";
int mx = 0; x = 0;
for(int i = sz(dig)-1; i >= 0; i--){
x *= 4; x += dig[i];
bit_set(mx + x +1);
//cout<<mx+x+1<<" ";
mx *= 4; mx += 4;
}//cout<<" bitset\n";
}
int compare(int b) {
vector<int> dig;
int x = b;
for(int j = 0; j < 6; j++){
dig.push_back(x%4);
x/=4;
//cout<<dig[j]<<" ";
}//cout<<"\n";
vector<int> pos;
int mx = 0; x = 0;
for(int i = sz(dig)-1; i >= 0; i--){
x *= 4; x += dig[i];
pos.push_back(mx + x +1);
mx *= 4; mx += 4;
}
int l = 0, r = 6;
while(l != r){
int mid = (l+r)/2;
int aux = bit_get(pos[mid]);
if(aux)l = mid+1;
else r = mid;
}
if(l == 6)return 0;
reverse(dig.begin(),dig.end());
if(dig[l] == 0)return -1;
if(dig[l] == 3)return 1;
if(dig[l] == 2){
int x = bit_get(pos[l]+1);
if(x == 1)return -1;
return 1;
}
if(dig[l] == 1){
int x = bit_get(pos[l]-1);
if(x == 1)return 1;
return -1;
}
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
