| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 718843 | lam | 비교 (balkan11_cmp) | C++14 | 1514 ms | 96040 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cmp.h"
#include <bits/stdc++.h>
using namespace std;
int delta[6] = {1,4097,5121,5377,5441,5457};
void remember(int n) {
for (int i=0; i<6; i++) bit_set(delta[i] + (n>>(2*i)));
}
bool get(int x)
{
// cerr<<x<<endl;
assert(x>0);
return bit_get(x);
}
int compare(int b) {
int l=0; int r=5;
int ans = -1;
while (l<=r)
{
int mid=(l+r)/2;
// if (b==234)
// {
//// cerr<<mid<<' '<<b<<endl;
//// int temp = ((b>>(2*mid))); cerr<<temp<<"!!"<<endl;
//
// }
if (get((b>>(2*mid))+delta[mid])) r=mid-1;
else
{
ans=mid;
l=mid+1;
}
}
if (ans==-1) return 0;
int digit = (b>>(2*ans))&3;
// if (b==234)
// {
//
// cerr<<ans<<endl;
// int x=b;
// while (x>0)
// {
// cerr<<(x&3); x>>=2;
// }
// cerr<<endl;
// x=3723;
// while (x>0)
// {
// cerr<<(x&3); x>>=2;
// }
// cerr<<endl;
// cerr<<" = ";
// cerr<<digit<<endl;
// }
if (digit>1)
{
if (get(((b>>(2*ans+2))<<2) + 3 + delta[ans])) return -1;
else return 1;
}
else
{
// cerr<<ans<<' '<<delta[ans]<<endl;
// int val = ((b>>(2*ans+2))<<2) + delta[ans]; cerr<<val<<endl;
if (get(((b>>(2*ans+2))<<2) + delta[ans])) return 1;
else return -1;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
