제출 #671746

#제출 시각아이디문제언어결과실행 시간메모리
671746LittleCubeLottery (CEOI18_lot)C++14
100 / 100
594 ms8376 KiB
#include <bits/stdc++.h>
#define ll long long
#define plll tuple<ll, ll, ll>
using namespace std;

int n, l, q, a[10005], ans[10005][105], pos[10005], b[105], qu[105];
signed main()
{
    cin >> n >> l;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    cin >> q;
    for (int i = 1; i <= q; i++)
    {
        cin >> b[i];
        qu[i] = b[i];
    }
    sort(qu + 1, qu + 1 + q);
    for (int i = q; i >= 1; i--)
        for (int j = qu[i - 1]; j <= qu[i]; j++)
            pos[j] = i;
    for (int d = 1; d <= n - l; d++)
    {
        int cur = 0;
        for (int i = 0; i < l; i++)
            cur += a[i] != a[i + d];
        for (int i = 1; i + l - 1 + d <= n; i++)
        {
            cur -= a[i - 1] != a[i - 1 + d];
            cur += a[i + l - 1] != a[i + l - 1 + d];
            ans[i][pos[cur]]++;
            ans[i + d][pos[cur]]++;
        }
    }
    for (int i = 1; i <= q; i++)
        for (int j = 1; j <= n - l + 1; j++)
        {
            int sum = 0;
            for (int k = 1; k <= q; k++)
                if (qu[k] <= b[i])
                    sum += ans[j][k];
            cout << sum << " \n"[j == n - l + 1];
        }
}
#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...