diff --git a/2022/city/12/grupuri/grupuri_tests1-10.cpp b/2022/city/12/grupuri/grupuri_tests1-10.cpp new file mode 100644 index 0000000..758a35b --- /dev/null +++ b/2022/city/12/grupuri/grupuri_tests1-10.cpp @@ -0,0 +1,57 @@ +#include + +using namespace std; + + + +int main(int argc, char *argv[]) { + string inName = "test.in"; + string outName = "test.out"; + + if (argc > 1) { + inName = argv[1]; + cout << "Using \"" << inName << "\" for test name" << endl; + } else { + cout << "Warning: no in name provided, defaulting to test.in" << endl; + } + + if (argc > 2) { + outName = argv[2]; + cout << "Using \"" << outName << "\" for out name" << endl; + } else { + cout << "Warning: no out name proviced, defaulting to test.out" << endl; + } + + ifstream in(inName); + ofstream out(outName); + + // ***************** SOLUTION START HERE ***************** + + int m, n; + in >> n; + in >> m; + + string accessStrings[m]; + // set to "" + for (int i = 0; i < m; i++) { + accessStrings[i] = ""; + } + + int canAccessCounter; + int userID; + for (int i = 0; i < n; i++) { + in >> canAccessCounter; + for (int j = 0; j < canAccessCounter; j++) { + in >> userID; + accessStrings[userID - 1] += to_string(i); + } + } + + unordered_set group_permissions; + for (int i = 0; i < m; i++) { + group_permissions.insert(accessStrings[i]); + } + out << group_permissions.size() << endl; + + return 0; +} diff --git a/2022/city/12/grupuri/grupuri_tests11-20.cpp b/2022/city/12/grupuri/grupuri_tests11-20.cpp new file mode 100644 index 0000000..86d360f --- /dev/null +++ b/2022/city/12/grupuri/grupuri_tests11-20.cpp @@ -0,0 +1,53 @@ +#include + +using namespace std; + + + +int main(int argc, char *argv[]) { + string inName = "test.in"; + string outName = "test.out"; + + if (argc > 1) { + inName = argv[1]; + cout << "Using \"" << inName << "\" for test name" << endl; + } else { + cout << "Warning: no in name provided, defaulting to test.in" << endl; + } + + if (argc > 2) { + outName = argv[2]; + cout << "Using \"" << outName << "\" for out name" << endl; + } else { + cout << "Warning: no out name proviced, defaulting to test.out" << endl; + } + + ifstream in(inName); + ofstream out(outName); + + // ***************** SOLUTION START HERE ***************** + + int n; + in >> n; + + unordered_map> permissions; + + + int canAccessCounter; + int userID; + for (int i = 0; i < n; i++) { + in >> canAccessCounter; + for (int j = 0; j < canAccessCounter; j++) { + in >> userID; + permissions[userID].set(i); + } + } + + unordered_set group_permissions; + for (auto it = permissions.begin(); it != permissions.end(); it++) { + group_permissions.insert((*it).second.to_string()); + } + out << group_permissions.size() << endl; + + return 0; +}