Pagini recente » Cod sursa (job #1568521) | Cod sursa (job #842519) | Rating Bucovan Mihnea (ingineur-mih) | Cod sursa (job #968816) | Cod sursa (job #520678)
Cod sursa(job #520678)
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
char v[1050000];
int main(){
long i,n,m,l,p,pt[21],k,max=0,nr;
char s[21],x[21],ch,c[2];
ifstream f("dinti.in");
ofstream g("dinti.out");
f>>n;f>>m;f>>l;
p=1;
for(i=l-1;i>=0;i--)
{pt[i]=p;p=p*2;}
f.get();
f.get(s,l+1);nr=0;
for (int j=0;j<l;j++)
nr=nr+(s[j]-'0'?0:1)*pt[j];
for(i=0;i<n-l;i++)
{
v[nr]=1;
for(k=1;k<=l;k++)
if(i&(1<<k))v[nr^(1<<k)]=1;
if(nr>max)max=nr;
f>>ch;
nr=nr%pt[0];
long t=(ch-'0')?0:1;
nr=nr*2+t;
}
v[nr]=1;if(nr>max)max=nr;
/*for(i=max;i>=0;i--)
if(v[i]){
for(k=1;k<=l;k++)
if(i&(1<<k))v[i^(1<<k)]=1;
}
for(i=0;i<1000;i++)
if(v[i]){
cout<<i<<endl;}
cout<<endl;*/
f.get();
for(i=0;i<m;i++){
//f.getline(s,20);
long nr=0;p=1;
/*for (int j=0;j<l;j++)
nr=nr+(s[j]-'0')*pt[j];
*/
f>>x;
for(int j=l-1;j>=0;j--)
nr+=(x[j]-'0')*pt[j];
if(v[nr])g<<1<<endl;
else g<<0<<endl;
}
f.close();g.close();
return 0;
}