SRM 384 250pt: Library
問題概要
所属しているグループ名の集合と、アクセス可能な部屋名の集合と、(書名、部屋名、グループ名)の集合が与えられる。部屋名とグループ名がどちらも集合に含まれるような書名は何通りあるか求める問題。
考えたこと
practiceで通したコード
計算量O(MAX_LEN * N * log N)くらい。
#include <set> #include <vector> #include <string> #include <sstream> using namespace std; struct Library { int documentAccess(vector <string> records, vector <string> userGroups, vector <string> roomRights) { set<string> rooms(roomRights.begin(), roomRights.end()), users(userGroups.begin(), userGroups.end()), can_access; for(int i=0; i<(int)records.size(); i++){ stringstream ss(records[i]); string doc, room, user; ss >> doc >> room >> user; if( rooms.find(room) != rooms.end() && users.find(user) != users.end() ){ can_access.insert(doc); } } return can_access.size(); } };