Submission #1199977

#TimeUsernameProblemLanguageResultExecution timeMemory
1199977user736482Lottery (CEOI18_lot)C++17
0 / 100
510 ms944 KiB
#include<bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("Ofast")
#define ll int
#define pb push_back
#define ff first
#define ss second
using namespace std;
int n,q,a,k,l;
vector<int>v,poz;//duze jedno do usuniecia
vector<pair<int,int>>pom;
int pod[10007];
int ans[107][10007];
int licz[107][10007];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>l;
    for(int i=0;i<n;i++){
        cin>>a;
        v.push_back(a);
    }


    cin>>q;
    for(int i=0;i<q;i++){

        cin>>k;
        k=l-k;

        pom.push_back({k,i});
    }
    sort(pom.begin(),pom.end());
    for(int i=0;i<l-1;i++){
            for(int j=i+1;j<n;j++){
                if(v[i]==v[j])pod[j-i]++;
            }
        }
        for(int i=l-1;i<n;i++){
            if(i!=l-1){
            i=i-l;
            for(int j=i+1;j<n;j++){
                if(v[i]==v[j])pod[j-i]--;
            }
            i=i+l;}
            for(int j=i+1;j<n;j++){
                if(v[i]==v[j])pod[j-i]++;
            }
            vector<ll>tb[10007];
            for(int j=i+1;j<n;j++){
              tb[pod[-i+j]].pb(i-l+1);
              tb[pod[j-i]].pb(j-l+1);
               
            }int ak=0;
            for(int i=0;i<10007;i++){
              while(ak<pom.size()-1 && pom[ak+1].ff<=i)ak++;
              for(int j : tb[i])licz[ak][j]++;
            }
        }
    for(int i=q-1;i>=0;i--){
        for(int j=0;j<n-l+1;j++){
          if(i<q-1)
          licz[i][j]+=licz[i+1][j];
          ans[pom[i].ss][j]=licz[i][j];
           // cout<<licz[i][j]<<" ";
        }
        cout<<"\n";
    }
    for(int i=0;i<q;i++){
      for(int j=0;j<n-l+1;j++){
        cout<<licz[i][j]<<" ";
      }
      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...