比赛 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;
}