/*
ID: 551100k1
LANG: C++
TASK: contact
*/
#include<stdio.h>
#include<string.h>
#include<vector>
#include<iostream>
using namespace std;
struct P{
int x,y;
};
int add[5005][15]={0},top=0;
vector<P> vec[200005];
char s[200005],c;
int main(){
freopen("contact.in","r",stdin);
freopen("contact.out","w",stdout);
int a,b,n,i,j,k,num,tmp=0,line;
scanf("%d%d%d",&a,&b,&n);
while(scanf("%c",&c)!=EOF){
if(c!='\n') s[top++]=c;
}
s[top]=0;
for(i=0;s[i];i++){
num=0;
for(j=i;j<i+b && s[j];j++){
num=num*2+(s[j]=='1');
if(j>=i+a-1)
add[num][j-i]++;
}
}
for(j=0;j<b;j++){
for(i=0;i<5000;i++){
if(add[i][j]){
vec[add[i][j]].push_back((P){i,j});
}
}
}
for(i=200000;i>=0;i--){
if(vec[i].size()){
printf("%d\n",i);
for(j=0;j<vec[i].size();j++){
if(j && j%6==0) puts("");
if(j%6) putchar(' ');
k=vec[i][j].x;
string r;
while(k){
r=char(k%2+'0')+r;
k/=2;
}
while(r.size()<=vec[i][j].y) r='0'+r;
printf("%s",r.c_str());
}
tmp++;
puts("");
}
if(tmp==n) return 0;
}
}
沒有留言:
張貼留言