Submission #103777

#TimeUsernameProblemLanguageResultExecution timeMemory
103777alexpetrescuLast supper (IOI12_supper)C++14
0 / 100
2551 ms1400 KiB

#include "advisor.h"
#include <vector>

void ComputeAdvice(int *C, int N, int K, int M) {
    std::vector < int > viz(N, 0);
    int timp = 0;
    for (int i = 0; i < K; i++) {
        int pos = 0, cnt = 0;
        timp++;
        while (pos < N && C[pos] != i) {
            cnt += viz[C[pos]] != timp;
            viz[C[pos]] = timp;
            pos++;
        }
        WriteAdvice(pos < N && cnt < K);
    }
    for (int i = 0; i < N; i++) {
        int pos = i + 1, cnt = 0;
        timp++;
        while (pos < N && C[pos] != C[i]) {
            cnt += viz[C[pos]] != timp;
            viz[C[pos]] = timp;
            pos++;
        }
        WriteAdvice(pos < N && cnt < K);
    }
}

#include "assistant.h"
#include <vector>

void Assist(unsigned char *A, int N, int K, int R) {
    std::vector < int > v(K), t(N, 0);
    for (int i = 0; i < K; i++)
        v[i] = i, t[i] = A[i];
    for (int i = 0; i < N; i++) {
        int x = GetRequest();
        int p = 0;
        while (p < K && v[p] != x)
            p++;
        if (p >= K) {
            p = 0;
            while (t[v[p]])
                p++;
            PutBack(v[p]);
            v[p] = x;
        }
        t[x] = A[i + K];
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...