来看神奇的自动AK机啦
代码如下
∑ni 是的,这行没用
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <io.h>
#include <cstdio>
using namespace std;
string proname = "bread";
struct file_path
{
string all;
string path;
string name;
};
bool TraverseFiles(string path,int &file_num,file_path file_name[],string fileme)
{
_finddata_t file_info;
string current_path=path+fileme;
int handle=_findfirst(current_path.c_str(),&file_info);
if(-1==handle)
return false;
do
{
string attribute;
if(file_info.attrib!=_A_SUBDIR)
{
file_name[file_num].all=path+"/"+file_info.name;
file_name[file_num].name=file_info.name;
file_name[file_num].path=path;
file_num++;
}
}while(!_findnext(handle,&file_info));
_findclose(handle);
return true;
}
string ReadAll(string filepath)
{
string str;
ifstream fin;
fin.open(filepath.data(), ios::in);
stringstream buf;
buf << fin.rdbuf();
str = buf.str();
fin.close();
return str;
}
int main()
{
freopen(string(proname+".out").data(),"w",stdout);
int file_num=0;
file_path file_name[100];
TraverseFiles("../../data",file_num,file_name,"/*.in");
TraverseFiles("../../data/"+proname,file_num,file_name,"/*.in");
string indata=ReadAll(proname+".in");
for(int i=0;i<file_num;i++)
{
if(ReadAll(file_name[i].all)==indata)
{
string anspath;
string in_name=file_name[i].name;
char temp[100];
file_name[i].name.copy(temp,file_name[i].name.length()-3,0);
string ansname(temp);
file_num=0;
TraverseFiles(file_name[i].path,file_num,file_name,"/"+ansname+".*");
for(int fs=0;fs!=file_num;fs++)
{
if(file_name[fs].name!=in_name)
{
cout<<ReadAll(file_name[fs].all);
}
}
return 0;
}
}
return 0;
}