#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
#include"cmp.h"
// int k,cn;
// vector<int>v;
// void bit_set(int i){
// v[i]=1;
// cn++;
// cout<<"Bit Set "<<i<<endl;
// }
void remember(int value){
// v.clear();
// v.resize(100000,0);
// cn=0;
int l=0,r=4096,ls=0;
while(l<r){
int m=(l+r-1)/2;
if(value<=m)r=m,ls++;
else l=m+1;
}
l=0,r=4096;
if(ls<=6){
while(l<r){
int m=(l+r-1)/2;
if(value<=m){
bit_set(m+1);
r=m;
}
else l=m+1;
}
}
else{
bit_set(5000);
while(l<r){
int m=(l+r-1)/2;
if(value<=m)r=m;
else{
bit_set(m+1);
l=m+1;
}
}
}
}
// int bit_get(int i){
// k++;
// cout<<"Want "<<i<<" And got "<<v[i]<<endl;
// return v[i];
// }
int compare(int value){
// k=0;
int l=0,r=4096,cs=bit_get(5000);
while(r-l>1){
int m=(l+r-1)/2;
// cout<<l<<' '<<r<<' ';
if(!cs){
if(bit_get(m+1))r=m;
else l=m+1;
}
else{
if(!bit_get(m+1))r=m;
else l=m+1;
}
}
// return l;
if(value<l)return -1;
if(value==l)return 0;
return 1;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |