Submission #1136769

#TimeUsernameProblemLanguageResultExecution timeMemory
1136769gygLottery (CEOI18_lot)C++17
45 / 100
61 ms16196 KiB
#include <bits/stdc++.h>
using namespace std;
#define arr array 
const int N = 2e3 + 5, K = 2e3 + 5;

int n, k;
arr<int, N> a;
int q;

arr<arr<int, N>, N> lk;
void prcmp() {
    for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            if (a[i] != a[j]) continue;
            int dst = min(i, k);
            lk[i][j]++, lk[i - dst][j - dst]--;
            lk[j][i]++, lk[j - dst][i - dst]--;
        }
    }

    // for (int i = 1; i <= n; i++) {
    //     for (int j = 1; j <= n; j++) cout << lk[i][j] << " ";
    //     cout << '\n'; 
    // }

    for (int d = -n + 1; d <= n - 1; d++) {
        int sm = 0;
        for (int i = n; i >= 1; i--) {
            int j = i + d;
            if (j < 1 || n < j) continue;
            sm += lk[i][j], lk[i][j] = sm;
        }
    }

    // for (int i = 1; i <= n; i++) {
    //     for (int j = 1; j <= n; j++) cout << lk[i][j] << " ";
    //     cout << '\n'; 
    // }
}

void cmp(int df) {
    for (int i = 1; i <= n - k + 1; i++) {
        int cnt = 0;
        for (int j = 1; j <= n - k + 1; j++)
            if (j != i) cnt += (lk[i][j] >= k - df);
        cout << cnt << " ";
    }
    cout << '\n';
}

signed main() {
    // freopen("in", "r", stdin);
    cin >> n >> k;
    for (int i = 1; i <= n; i++) cin >> a[i];
    cin >> q; 
    prcmp();
    for (int i = 1; i <= q; i++) { int x; cin >> x; cmp(x); }
}
#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...