RT
#include <bits/stdc++.h>
using namespace std;
class File;
class Data;
class Problem_Datas;
class File
{
public:
enum Format
{
MIE, //<main_name><id>.<ext_name>
MEI //<main_name>.<ext_name><id>
};
unsigned long id;
string main_name, ext_name;
Format format;
public:
File() = default;
File(string name) :
id(stoul(string(name.begin() + name.find_first_of("0123456789"), name.begin() + name.find_last_of("0123456789") + 1))),
main_name(string(name.begin(), name.begin() + name.find("."))), ext_name(string(name.begin() + name.find(".") + 1, name.end())),
format(name.find_first_of("1234567890") < name.find(".") ? MIE : MEI)
{
string::size_type pos = ext_name.find_first_of("01234567890");
if(pos != string::npos)
ext_name.erase(ext_name.begin() + pos, ext_name.end());
}
inline string name() const
{
switch(format)
{
case MIE:
return main_name + to_string(id) + "." + ext_name;
case MEI:
return main_name + "." + ext_name + to_string(id);
}
}
inline void set_id(unsigned id) { this->id = id; }
};
class Data
{
public:
File iFile, oFile;
Data() = default;
Data(string iFileName, string oFileName) : iFile(iFileName), oFile(oFileName) {}
Data(File iFile, File oFile) : iFile(iFile), oFile(oFile) {}
};
class Problem_Datas
{
public:
vector<Data> datas;
inline void set_first_data_id(unsigned id)
{
for(auto &r:datas)
{
r.iFile.set_id(id);
r.oFile.set_id(id);
++id;
}
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string str;
Problem_Datas datas;
getline(cin, str);
switch(str.find(" "))
{
case string::npos:
{
unsigned long first_data_id(stoul(str));
while(!cin.eof())
{
string iFileName, oFileName;
cin >> iFileName >> oFileName;
datas.datas.push_back(Data(iFileName, oFileName));
}
datas.set_first_data_id(first_data_id);
for(auto r:datas.datas)
cout << r.iFile.name() << " " << r.oFile.name() << "\n";
break;
}
default:
{
{
istringstream iss(str);
string iFileName, ext_name;
iss >> iFileName >> ext_name;
datas.datas.push_back(Data(iFileName, File()));
datas.datas[0].oFile.main_name = datas.datas[0].iFile.main_name;
datas.datas[0].oFile.ext_name = ext_name;
}
unsigned long n(datas.datas[0].iFile.id);
while(!cin.eof())
{
string iFileName, oFileName;
cin >> iFileName >> oFileName;
Data data(iFileName, oFileName);
// datas.datas.push_back(Data());
data.iFile.main_name = datas.datas[0].iFile.main_name;
data.oFile.main_name = datas.datas[0].oFile.main_name;
data.iFile.main_name.erase(data.iFile.main_name.end() - 1); //
data.oFile.main_name.erase(data.oFile.main_name.end() - 1); //
data.iFile.ext_name = datas.datas[0].iFile.ext_name;
data.oFile.ext_name = datas.datas[0].oFile.ext_name;
data.iFile.id = n;
data.oFile.id = n;
cout << data.iFile.name() << " " << data.oFile.name() << "\n";
++n;
}
}
}
return 0;
}