問題
http://community.topcoder.com/stat?c=problem_statement&pm=7659&rd=10808
解き方
解くだけ。
setを使えば重複の考慮も不要で、条件を満たしているかも簡単に判断できる。
コード
class Library {
public: int documentAccess(vector<string> records, vector<string> userGroups, vector<string> roomRights) {
set<string> user,room;
FORE(i,0,userGroups.size())user.insert(userGroups[i]);
FORE(i,0,roomRights.size())room.insert(roomRights[i]);
set<string> ans;
FORE(i,0,records.size()){
stringstream out(records[i]);
string doc,u,r;
out >> doc >> r >> u;
if(room.find(r)!=room.end() && user.find(u)!=user.end()){
ans.insert(doc);
}
}
return ans.size();
}
};
public: int documentAccess(vector<string> records, vector<string> userGroups, vector<string> roomRights) {
set<string> user,room;
FORE(i,0,userGroups.size())user.insert(userGroups[i]);
FORE(i,0,roomRights.size())room.insert(roomRights[i]);
set<string> ans;
FORE(i,0,records.size()){
stringstream out(records[i]);
string doc,u,r;
out >> doc >> r >> u;
if(room.find(r)!=room.end() && user.find(u)!=user.end()){
ans.insert(doc);
}
}
return ans.size();
}
};