/*
题目:号码可以设计禁止路由的号段区间,求在区间的入参,并排序
- Note: 缺省代码仅供参考,可自行决定使用、修改或删除
*/
#include
#include
#include
#include
#include
#include
class Solution
{
public:
void DealData(vector& ret, vector& retOut)
{
string min = ret[0];
int minIndex = 0;
for (int i = 0; i < ret.size(); i++) {
min = “000000000000000”;
for (int j = 0; j < ret.size(); j++) {
if ((min < ret[j]) && (ret[j].size() > 0)) {
min = ret[j];
minIndex = j;
}
}
ret[minIndex] = “”;
retOut.push_back(min);
}
}
// 待实现函数,在此函数中填入答题代码
vector GetRoamingArea(const vector<pair<string, string>>& restricts, const vector& areas)
{
vector ret;
vector retOut;
for (int i = 0; i < areas.size(); i++) {
int flag = 0;
for (int j = 0; j < restricts.size(); j++) {
int start = stoi(restricts[j].first);
int end = stoi(restricts[j].second);
int startNum = (restricts[j].first).size();
int endNum = (restricts[j].second).size();
string temp1 = areas[i].substr(0, startNum);
int iTemp1 = stoi(temp1);
string temp2 = areas[i].substr(0, endNum);
int iTemp2 = stoi(temp2);
if ((iTemp1 >= start) && (iTemp1 <= end)) {
flag = 1;
break;
}
if ((iTemp2 >= start) && (iTemp2 <= end)) {
flag = 1;
break;
}
}
if (flag == 0) {
ret.push_back(areas[i]);
}
}
if (ret.size() == 0) {
retOut.push_back(“empty”);
return retOut;
}
DealData(ret, retOut);
if (retOut.size() == 0) {
// retOut.push_back(“empty”);
cout << “empty” << endl;
}
return retOut;
}
};
// 以下为考题输入输出框架,此部分代码不建议改动
inline string ReadLine()
{
string line;
getline(cin, line);
return line;
}
inline vector ReadLines(int size)
{
vector lines(size);
for (int i = 0; i < size; ++i) {
lines[i] = ReadLine();
}
return lines;
}
inline pair<string, string> SplitPair(const string& word, char delimeter)
{
auto pos = word.find(delimeter);
return make_pair(word.substr(0, pos), word.substr(pos + 1));
}
template
inline void WriteVector(const vector& objects, char delimeter = ’ ')
{
auto it = objects.begin();
if (it == objects.end()) {
return;
}
cout << *it;
for (++it; it != objects.end(); ++it) {
cout << delimeter << *it;
}
}
int main()
{
pair<string, string> p = SplitPair(ReadLine(), ’ ');
int m = stoi(p.first);
int n = stoi(p.second);
vector rs = ReadLines(m);
vector<pair<string, string>> restricts;
for (auto s : rs) {
pair<string, string> p2 = SplitPair(s, ’ ');
restricts.push_back(p2);
}
vector areas = ReadLines(n);
Solution solu;
vector out = solu.GetRoamingArea(restricts, areas);
WriteVector(out, ‘\n’);
return 0;
}