# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
362537 | ray5273 | cmp (balkan11_cmp) | C++14 | 2302 ms | 101612 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "cmp.h"
#include <iostream>
using namespace std;
int val;
//여기저장이 아니라 memory에 저장인듯
//4095만드는데 12번 필요
//크기 비교를 용이하게 하기 위해서 어떻게 10240개를 사용해야할까?
void remember(int a) {
int cnt=1;
//4096 기준으로
//2048 보다 업다운 체크 1이면 업 0이면 다운
//
//8 -> 1000
a+=1;//이걸로 될까?
int start = 1;
int end = 4096;
//계속 찾았는데 숫자가 없으면
//있는지 없는지는 4096 더한 어떤 bit을 확인하면 되나?
//4096
//4096
//1+4096
while(start<=end){
int mid = (start+end)/2;
//크면 set
// cout << "mid : " << mid << endl;
if(a>mid){
bit_set(mid);
start=mid+1;
}else if(a<mid){
end=mid-1;
}else if(a==mid){
bit_set(mid);
bit_set(mid+4096);
return;
}
}
}
//특수한 경우에만 10개를 넘는듯하다
//숫자 자체를 만들기 힘든경우
//1022,2046,4094,4095의 경우 10,11,12,13 //4개빼고 9개 선에서 컷되는데
int compare(int b) {
b+=1;
int start=1;
int end = 4096;
// if(b==1022 || b==2046 || b==4094 || b==4095){
// if(b==1022 && bit_get(1024)){
// return -1;
// }else if(b==1022 && bit_get(1024)){
// }
// }
while(start<=end){
int mid = (start+end)/2;
//크면 set
int a_bit = bit_get(mid);
//등호처리를 좀 잘 해야할거같다
//같은 범위는 옮겨만 준다.
if(a_bit && b>mid){ //a가 mid보다 크거나 b도 mid보다 큰 경우
start=mid+1;
}else if(a_bit && b<mid){
// cout << "mid and b : " << mid << " , " << b << endl;
return -1;
}else if(a_bit && b==mid){//a는 mid보다 크거나 같은데 , b는 mid임
if(bit_get(mid+4096))// mid+4096이 check 되어 있으면 같은거임 그게 아니면 a가 더 큰거임
return 0;
else{//여기서 걸렸네
// cout << "hello" << endl;
return -1;
}
}else if(!a_bit && b>=mid){//a는 mid보다 작으면서 b는 mid보다 큰경우
return 1;
}else if(!a_bit && b<mid){ //a는 mid보다 작고, b도 mid보다 작고
end = mid-1;
}
}
}
//최종 목표는 a,b를 비교한 값을 내놓아라
//compare에서는 a를 찾아야하고
//remember에서는 address를 찾아야하고?
//bitset ,bitget해야만 하는 상황에서만 해야한다?
//set을하지 못하면 get도 하지 못한다.
//뭘 저장해야하는가?
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |