#include "advisor.h"
#include <bits/stdc++.h>
#define ff first
#define ss second
using namespace std;
typedef pair<int, int> pii;
set<pii> s;
vector <int> ans;
queue <int> q[100100];
int sca[100100], pos[100100];
vector <int> dectobin(int n){
vector<int> r;
for(int i = 14; 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;
memset(pos, -1, sizeof pos);
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)), sca[i] = pos[i] = i;
for(int i = 0; i < N; ++i){
if(pos[C[i]] != -1){
s.erase(pii(q[C[i]].front(), pos[C[i]]));
q[C[i]].pop();
s.insert(pii(q[C[i]].front(), pos[C[i]]));
}
else{
sca[s.begin() -> ss] = C[i];
pos[C[i]] = s.begin() -> ss;
ans.push_back(s.begin() -> ss);
q[C[i]].pop();
s.erase(s.begin());
s.insert(pii(q[C[i]].front(), pos[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;
int sca2[100100], pos2[100100];
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 << (14 - (i%15)))*(A[i] == 1);
if((i%15) == 14){
r.push_back(aux);
aux = 0;
}
}
return r;
}
void Assist(unsigned char *A, int N, int K, int R){
int cnt = 0;
memset(pos2, -1, sizeof pos2);
vector<int> rem = bintodec(A, R);
for(int i = 0; i < K; ++i) scaf.insert(i), sca2[i] = pos2[i] = i;
for(int i = 0; i < N; ++i){
int req = GetRequest();
if(pos2[req] != -1) continue;
else{
PutBack(sca2[rem[cnt]]);
pos2[sca2[rem[cnt]]] = -1;
sca2[rem[cnt]] = req;
//scaf.erase(rem[cnt]);
//scaf.insert(req);
++cnt;
}
}
}
Compilation message
advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:46:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < ans.size(); ++i){
~~^~~~~~~~~~~~
advisor.cpp:48:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j = 0; j < aux. size(); ++j)
~~^~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
91 ms |
136432 KB |
Output is correct |
2 |
Incorrect |
88 ms |
136624 KB |
Error - Putting back a color when it is already on the scaffold |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
117 ms |
137880 KB |
Error - Putting back a color when it is already on the scaffold |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
371 ms |
144104 KB |
Error - Putting back a color when it is already on the scaffold |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
82 ms |
144104 KB |
Error - advice is too long |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
544 ms |
145896 KB |
Error - Putting back a color when it is already on the scaffold |
2 |
Incorrect |
456 ms |
146112 KB |
Error - Putting back a color when it is already on the scaffold |
3 |
Incorrect |
469 ms |
146344 KB |
Error - Putting back a color when it is already on the scaffold |
4 |
Incorrect |
453 ms |
146392 KB |
Error - Putting back a color when it is already on the scaffold |
5 |
Incorrect |
372 ms |
146392 KB |
Error - Putting back a color when it is already on the scaffold |
6 |
Incorrect |
368 ms |
146392 KB |
Error - Putting back a color when it is already on the scaffold |
7 |
Incorrect |
472 ms |
146392 KB |
Error - Putting back a color when it is already on the scaffold |
8 |
Incorrect |
493 ms |
146432 KB |
Error - Putting back a color when it is already on the scaffold |
9 |
Incorrect |
431 ms |
146512 KB |
Error - Putting back a color when it is already on the scaffold |
10 |
Incorrect |
426 ms |
148608 KB |
Error - Putting back a color when it is already on the scaffold |