제출 #126004

#제출 시각아이디문제언어결과실행 시간메모리
126004Runtime_error_Lottery (CEOI18_lot)C++14
100 / 100
671 ms8696 KiB

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+9,Q=109;

int n,l,q,a[N],id[N],ans[N][Q],where[N],tmp[N],pre[N];
pair<int,int> query[N];


int main(){

    scanf("%d%d",&n,&l);
    for(int i=1;i<=n;i++)
        scanf("%d",a+i);

    scanf("%d",&q);
    for(int i=1;i<=q;i++)
        scanf("%d",&query[i].first),query[i].second = i;

    sort(query+1,query+1+q);
    for(int i=1;i<=q;i++)
        id[ query[i].second ]  = i;

    for(int i=0;i<=l;i++){
        where[i] = q+1;
        for(int j=1;j<=q;j++){
            if(query[j].first >= i){
                where[i] = j;
                break;
            }
        }
    }
    //tmp[i][j] = a[i]!=a[i+j]
    for(int j=1;j<=n-l+1;j++){
        memset(pre,0,sizeof(pre));
        memset(tmp,0,sizeof(tmp));
        for(int i=1;i+j<=n;i++)
            tmp[i] = (a[i]!=a[i+j]),pre[i] = pre[i-1] +tmp[i];

        for(int i=1;i+j+l-1<=n;i++){
            int diff=pre[i+l-1]-pre[i-1];
            ans[i][ where[diff] ]++;
            ans[i+j][where[diff]]++;
        }
    }

    for(int i=1;i<=n;i++)
        for(int j=1;j<=q;j++)
            ans[i][j]+=ans[i][j-1];

    for(int i=1;i<=q;i++)
        for(int j=1;j<=n-l+1;j++)
            cout<<ans[j][id[i]]<<(j==n-l+1?'\n':' ');
}

컴파일 시 표준 에러 (stderr) 메시지

lot.cpp: In function 'int main()':
lot.cpp:12:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&l);
     ~~~~~^~~~~~~~~~~~~~
lot.cpp:14:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",a+i);
         ~~~~~^~~~~~~~~~
lot.cpp:16:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&q);
     ~~~~~^~~~~~~~~
lot.cpp:18:36: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&query[i].first),query[i].second = 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...