来看神奇的自动AK机啦


代码如下

<munderover> i n </munderover> 是的,这行没用

#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;
}