Submission #1222863

#TimeUsernameProblemLanguageResultExecution timeMemory
1222863Tenis0206Lottery (CEOI18_lot)C++20
80 / 100
3095 ms2092 KiB
#include <bits/stdc++.h>

using namespace std;

const int nmax = 1e4;
const int qmax = 100;

int n, l, q;
int v[nmax + 5], k[qmax + 5];

int pd[nmax + 5], md[nmax + 5];

int rez[qmax + 5][nmax + 5];

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    #ifdef home
    freopen("nr.in","r",stdin);
    freopen("nr.out","w",stdout);
    #endif // home
    cin>>n>>l;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    cin>>q;
    for(int i=1;i<=q;i++)
    {
        cin>>k[i];
    }
    for(int d=1;d<n;d++)
    {
        for(int i=1;i+d<=n;i++)
        {
            if(v[i] == v[i + d])
            {
                continue;
            }
            int sta = 0, dra = 0, stb = 0, drb = 0;
            if(i >= l)
            {
                sta = i - l + 1;
                dra = i;
                stb = i + d - l + 1;
                drb = i + d;
            }
            else
            {
                sta = 1;
                dra = i;
                stb = d + 1;
                drb = i + d;
            }
            ++pd[sta];
            --pd[dra + 1];
            ++md[stb];
            --md[drb + 1];
        }
        for(int i=1;i<=n;i++)
        {
            pd[i] += pd[i - 1];
            md[i] += md[i - 1];
            for(int j=1;j<=q;j++)
            {
                if(pd[i] <= k[j] && i + d + l - 1 <= n)
                {
                    ++rez[j][i];
                }
                if(md[i] <= k[j] && i - d >= 1)
                {
                    ++rez[j][i];
                }
            }
        }
        for(int i=1;i<=n;i++)
        {
            pd[i] = md[i] = 0;
        }
    }
    for(int i=1;i<=q;i++)
    {
        for(int j=1;j<=n-l+1;j++)
        {
            cout<<rez[i][j]<<' ';
        }
        cout<<'\n';
    }
    return 0;
}
#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...