Submission #500550

#TimeUsernameProblemLanguageResultExecution timeMemory
500550RambaXGorillaLottery (CEOI18_lot)C++17
100 / 100
594 ms8336 KiB
#include<cstdio>
#include<algorithm>
using namespace std;
int N, L, Q;
int draws[10010];
int quers[110];
int dists[20010] = {};
int nums[10010] = {};
int sims[110][10010];
int main(){
    scanf("%d%d",&N,&L);
    for(int i = 0;i < N;i++){
        scanf("%d",&draws[i]);
    }
    scanf("%d",&Q);
    for(int i = 0;i < Q;i++){
        scanf("%d",&quers[i]);
    }
    for(int j = 1;j < N - L + 1;j++){
        int dist = 0;
        for(int i = 0;i < L;i++){
            dist += draws[i] != draws[i + j];
        }
        dists[j + 10000] = dist;
        nums[dist]++;
    }
    for(int i = 1;i < L + 1;i++){
        nums[i] += nums[i - 1];
    }
    for(int j = 0;j < N - L + 1;j++){
        for(int i = 0;i < Q;i++){
            sims[i][j] = nums[quers[i]];
        }
        if(j == N - L){
            break;
        }
        fill(nums, nums + 10010, 0);
        int dist = 0;
        for(int i = 0;i < L;i++){
            dist += draws[i] != draws[i + j + 1];
        }
        dists[-j - 1 + 10000] = dist;
        nums[dist]++;
        for(int i = -j;i < N - L - j;i++){
            if(!i){
                continue;
            }
            dists[i + 10000] -= draws[j] != draws[i + j];
            dists[i + 10000] += draws[j + L] != draws[i + j + L];
            nums[dists[i + 10000]]++;
        }
        for(int i = 1;i < L + 1;i++){
            nums[i] += nums[i - 1];
        }
    }
    for(int i = 0;i < Q;i++){
        for(int j = 0;j < N - L + 1;j++){
            printf("%d ",sims[i][j]);
        }
        printf("\n");
    }
}

Compilation message (stderr)

lot.cpp: In function 'int main()':
lot.cpp:11:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     scanf("%d%d",&N,&L);
      |     ~~~~~^~~~~~~~~~~~~~
lot.cpp:13:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |         scanf("%d",&draws[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~
lot.cpp:15:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     scanf("%d",&Q);
      |     ~~~~~^~~~~~~~~
lot.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |         scanf("%d",&quers[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~
#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...