Submission #1325749

#TimeUsernameProblemLanguageResultExecution timeMemory
1325749DanielPr8Lottery (CEOI18_lot)C++20
100 / 100
699 ms12564 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvl = vector<vll>;
using pll = pair<ll,ll>;
using vpl = vector<pll>;
using vvp = vector<vpl>;
#define f first
#define s second
#define pb push_back
#define all(v) v.begin(),v.end()



int main(){
    ios_base::sync_with_stdio(0);cin.tie(NULL);
    ll n, l, q;
    cin >> n >> l;
    vll ar(n), ask;
    for(ll& i:ar)cin >> i;
    cin >> q;
    for(ll o,i = 0 ; i++ < q; ask.pb(o))cin >> o;
    vll ord=ask;
    sort(all(ord));
    ord.pb(n+1);
    vvl am(n, vll(q+1));

    for(ll j = 1; j < n; ++j){
        ll dif=0;
        for(ll i = 0; i+j < n; ++i){
            dif += (ar[i]!=ar[i+j]);
            if(i>=l)dif -= (ar[i-l]!=ar[i+j-l]);
            if(i<l-1)continue;
            ll fin = lower_bound(all(ord),dif)-ord.begin();
            am[i-l+1][fin]++;
            am[i+j-l+1][fin]++;
        }
    }
    for(ll i = 0; i < n; ++i){
        for(ll j = 1; j <= q; ++j){
            am[i][j]+=am[i][j-1];
        }
    }
    for(ll p:ask){
        ll fin = lower_bound(all(ord),p)-ord.begin();
        for(ll i = 0; i <= n-l; ++i){
            cout << am[i][fin] << " ";
        }
        cout << "\n";
    }
}
#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...