제출 #503890

#제출 시각아이디문제언어결과실행 시간메모리
503890krit3379Lottery (CEOI18_lot)C++17
45 / 100
635 ms972 KiB
#include<bits/stdc++.h>
using namespace std;
#define N 10005
 
long long h,hx[N],p=1e4+7,pp=1;
int a[N],b[N],ans[105][N],que[105],sz;
map<long long,int> mp,in;
 
int main(){
    int n,m,l,q,i,j,k,cnt,x;
    scanf("%d %d",&n,&l);
    for(i=1;i<=n;i++)scanf("%d",&a[i]),b[i]=a[i];
    m=n-l+1;
    scanf("%d",&q);
    for(i=1;i<=q;i++){
        scanf("%d",&que[i]);
    }
    if(q==1&&que[1]==0){
        sort(b+1,b+n+1);
        for(i=1;i<=n;i++)if(!in.count(b[i]))in[b[i]]=++sz;
        for(i=1;i<=l;i++)h=(h*p)+in[a[i]],pp*=p;
        hx[1]=h;
        mp[h]++;
        for(i=2;i<=m;i++)h=(h*p)-pp*in[a[i-1]]+in[a[l+i-1]],hx[i]=h,mp[h]++;
        for(i=1;i<=m;i++)printf("%d ",mp[hx[i]]-1);
        return 0;
    }
    for(i=1;i<=m;i++){
        vector<short> v;
        for(j=1;j<=m;j++){
            if(i==j)continue;
            cnt=0;
            for(k=0;k<l;k++)if(a[i+k]!=a[j+k])cnt++;
            v.push_back(cnt);
        }
        sort(v.begin(),v.end());
        for(j=1;j<=q;j++){
            int x=upper_bound(v.begin(),v.end(),que[j])-(v.begin());
            ans[j][i]=x;
        }
    }
    for(i=1;i<=q;i++){
        for(j=1;j<=m;j++)printf("%d ",ans[i][j]);
        printf("\n");
    }
    return 0;
}

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

lot.cpp: In function 'int main()':
lot.cpp:10:27: warning: unused variable 'x' [-Wunused-variable]
   10 |     int n,m,l,q,i,j,k,cnt,x;
      |                           ^
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:12:27: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     for(i=1;i<=n;i++)scanf("%d",&a[i]),b[i]=a[i];
      |                      ~~~~~^~~~~~~~~~~~
lot.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |     scanf("%d",&q);
      |     ~~~~~^~~~~~~~~
lot.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |         scanf("%d",&que[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...