比赛 |
20170519 |
评测结果 |
AWAAWWAWTT |
题目名称 |
可疑的斑点 |
最终得分 |
40 |
用户昵称 |
竹杖芒鞋 |
运行时间 |
2.091 s |
代码语言 |
C++ |
内存使用 |
1.17 MiB |
提交时间 |
2017-05-19 21:59:49 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int cow[100000+10],mod[25000+10],s[30],N,K,S,ans[100000+10],ans_r;
void input(){
scanf("%d%d%d",&N,&K,&S);
for(int i=1;i<=N;i++){
scanf("%d",&cow[i]);
}
for(int i=1;i<=K;i++)
scanf("%d",&mod[i]);
}
bool push(int a,int b){
//cout<<a<<" "<<b<<endl;
if(s[a] == b)return true;
if(s[a] == 0){
for(int i=1;i<=S;i++){
if(s[i]){
if(!((s[i]>b&&i>a) || (s[i]<b&&i<a)))
return false;
}
}
s[a] = b;
return true;
}
return false;
}
bool check(int a){
for(int i=1;i<=K;i++){
if(!push(mod[i],cow[i+a-1]))return false;
}
return true;
}
void init(){
memset(s,0,sizeof(s));
}
int main(){
freopen("cpattern.in","r",stdin);
freopen("cpattern.out","w",stdout);
input();
for(int i=1;i<=N-K+1;i++){
init();
if(check(i)){
ans[ans_r++] = i;
}
}
printf("%d\n",ans_r);
while(ans_r){
ans_r -- ;
printf("%d\n",ans[ans_r]);
}
fclose(stdin);
fclose(stdout);
return 0;
}