#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
//定义结构体
struct Record {
string id;
int time;
int distance;
string actualDeviceNumber;
string registeredDeviceNumber;
string src; //原输入类型字符串
};
//分割方法:获取结构体中的数据类型
vector<string> split(const string& str, char delim) {
vector<string> tokens;
stringstream ss(str);
string token;
while (getline(ss, token, delim)) {
tokens.push_back(token);
}
return tokens;
}
//判断方法
string solveMethod(vector<string> records) {
vector<Record> list(records.size());
for (int i = 0; i < records.size(); ++i) {
vector<string> splitRecord = split(records[i], ',');
Record r;
r.id = splitRecord[0];
r.time = stoi(splitRecord[1]);
r.distance = stoi(splitRecord[2]);
r.actualDeviceNumber = splitRecord[3];
r.registeredDeviceNumber = splitRecord[4];
r.src = records[i];
list[i] = r;
}
stringstream builder;
for (int i = 0; i < list.size(); ++i) {
Record cur = list[i];
if (cur.registeredDeviceNumber != cur.actualDeviceNumber) {
builder << cur.src << ";"; //添加 " ;" 分割字符串
continue;
}
for (Record tmp : list) {
if (abs(cur.time - tmp.time) < 60 && abs(cur.distance - tmp.distance) > 5) {
builder << cur.src << ";";
break;
}
}
}
return builder.str().empty() ? "null" : builder.str().substr(0,
builder.str().length() - 1); //末尾“;” 不输出
}
int main() {
int n;
cin >> n;
cin.ignore();
vector<string> records(n);//原始输入数据:100000,80,10,ABCE,ABCD
for (int i = 0; i < n; ++i) {
getline(cin, records[i]);
}
string res = solveMethod(records);
cout << res << endl;
return 0;
}