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 "advisor.h"
#include <bits/stdc++.h>
#define ff first
#define ss second
using namespace std;
typedef pair<int, int> pii;
set<pii> s;
int sca[100100];
vector <int> ans;
queue <int> q[100100];
vector <int> dectobin(int n){
vector<int> r;
for(int i = 12; i > -1; --i)
if((1 << i) <= n){
r.push_back(1);
n -= (1 << i);
}
else r.push_back(0);
return r;
}
void ComputeAdvice(int *C, int N, int K, int M){
vector <int> aux;
for(int i = 0; i < N; ++i) q[C[i]].push(-i);
for(int i = 0; i < N; ++i) q[i].push(-2*N);
for(int i = 0; i < K; ++i) s.insert(pii(q[i].front(), i));
for(int i = 0; i < N; ++i){
if(s.count(pii(q[C[i]].front(), C[i])) != 0){
s.erase(pii(q[C[i]].front(), C[i]));
q[C[i]].pop();
s.insert(pii(q[C[i]].front(), C[i]));
}
else{
ans.push_back(s.begin() -> ss);
q[C[i]].pop();
s.erase(s.begin());
s.insert(pii(q[C[i]].front(), C[i]));
}
}
for(int i = 0; i < ans.size(); ++i){
aux = dectobin(ans[i]);
for(int j = 0; j < aux. size(); ++j)
WriteAdvice(aux[j]);
}
}
#include "assistant.h"
#include<bits/stdc++.h>
using namespace std;
set <int> scaf;
vector<int> bintodec(unsigned char *A, int R){
int aux = 0;
vector<int> r;
for(int i = 0; i < R && A[i] != 2; ++i){
aux += (1 << (12 - (i%13)))*(A[i] == 1);
if((i%13) == 12){
r.push_back(aux);
aux = 0;
}
}
return r;
}
void Assist(unsigned char *A, int N, int K, int R){
int cnt = 0;
vector<int> rem = bintodec(A, R);
for(int i = 0; i < K; ++i) scaf.insert(i);
for(int i = 0; i < N; ++i){
int req = GetRequest();
if(scaf.count(req)) continue;
else{
scaf.erase(rem[cnt]);
scaf.insert(req);
PutBack(rem[cnt++]);
}
}
}
Compilation message (stderr)
advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:43:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < ans.size(); ++i){
~~^~~~~~~~~~~~
advisor.cpp:45:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j = 0; j < aux. size(); ++j)
~~^~~~~~~~~~~~~
# | 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... |