답안 #219627

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
219627 2020-04-05T20:28:07 Z MarcoMeijer 최후의 만찬 (IOI12_supper) C++14
0 / 100
328 ms 286224 KB
#include "advisor.h"
#include <bits/stdc++.h>
using namespace std;

//macros
typedef long long ll;
typedef pair<int, int> ii;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define INF 1e9
#define pb push_back
#define fi first
#define se second
#define sz size()

const int MX = 2e5;
queue<int> nxt[MX];
set<int> onShelf;
priority_queue<ii> pq;
map<int, int> last;
vi ans;
vi shelf;

void ComputeAdvice(int *C, int N, int K, int M) {
  RE(i,N) nxt[C[i]].push(i);
  RE(i,N) nxt[C[i]].push(N);
  ans.assign(K+N,0);
  RE(i,K) {
    onShelf.insert(i);
    pq.push({nxt[i].front(), i});
    last[i] = i;
  }
  RE(i,N) {
    nxt[C[i]].pop();
    last[C[i]] = K+i;
    if(onShelf.count(C[i])) continue;
    ii p = pq.top(); pq.pop();
    ans[last[p.second]] = 1;
    pq.push({nxt[C[i]].front(), C[i]});
  }
  for(int i:ans) WriteAdvice(i);
}
#include "assistant.h"
#include <bits/stdc++.h>
using namespace std;

//macros
typedef long long ll;
typedef pair<int, int> ii;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define INF 1e9
#define pb push_back
#define fi first
#define se second
#define sz size()

set<int> OnShelf;
queue<int> rem;

void Assist(unsigned char *A, int N, int K, int R) {
  RE(i,K) {
    OnShelf.insert(i);
    if(A[i]) rem.push(i);
  }
  RE(i,N) {
    int req = GetRequest();
    if(!OnShelf.count(req)) {
      PutBack(rem.front());
      OnShelf.erase(rem.front()); rem.pop();
      OnShelf.insert(req);
    }
    if(A[K+i]) rem.push(req);
  }
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 95 ms 269808 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 110 ms 271352 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 267 ms 281064 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 105 ms 270576 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 294 ms 283112 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Runtime error 307 ms 283368 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
3 Runtime error 289 ms 283624 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
4 Runtime error 309 ms 283624 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
5 Runtime error 306 ms 283880 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
6 Runtime error 304 ms 283880 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
7 Runtime error 318 ms 283624 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
8 Runtime error 296 ms 283880 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
9 Runtime error 295 ms 283624 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
10 Runtime error 328 ms 286224 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)