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<bits/stdc++.h>
#include "advisor.h"
using namespace std;
const int NB_BITS=13,MAX_COUL=100*1000,INFINI=1000*1000*1000;
set<int> date[MAX_COUL];
int pres[MAX_COUL];
set<pair<int,int>> proch;
set<int>::iterator it;
set<pair<int,int>>::iterator it2;
void crypte(int nb) {
cout<<nb<<endl;
for (int i=0;i<NB_BITS;i++) {
if (nb%2==1) {
WriteAdvice('1');
}
else {
WriteAdvice('0');
}
nb/=2;
}
}
void ComputeAdvice(int *ajout, int nbCoul, int taille, int tailleMax) {
for (int i=0;i<nbCoul;i++) {
date[i].insert(INFINI);
}
for (int i=0;i<nbCoul;i++) {
date[ajout[i]].insert(i);
}
for (int i=0;i<taille;i++) {
it=date[i].begin();
proch.insert(make_pair(*it,i));
pres[i]=1;
}
for (int i=0;i<nbCoul;i++) {
if (pres[ajout[i]]==1) {
crypte(nbCoul);
proch.erase(make_pair(i,ajout[i]));
it=date[ajout[i]].lower_bound(i+1);
proch.insert(make_pair(*it,ajout[i]));
}
else {
it2=proch.lower_bound(make_pair(INFINI,INFINI));
it2--;
crypte((*it2).second);
pres[(*it2).second]=0;
proch.erase(*it2);
it=date[ajout[i]].lower_bound(i+1);
pres[ajout[i]]=1;
proch.insert(make_pair(*it,ajout[i]));
}
}
}
#include<bits/stdc++.h>
#include "assistant.h"
using namespace std;
const int NB_BITS=13;
void Assist(unsigned char *AA, int NN, int KK, int RR) {
int nb;
for (int i=0;i<NN;i++) {
nb=GetRequest();
nb=0;
int multi=0;
for (int j=NB_BITS*i;j<NB_BITS*(i+1);j++) {
if (AA[j]=='1') {
nb+=multi;
}
multi*=2;
}
if (nb!=NN) {
PutBack(nb);
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |