Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <map>
- #include <set>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- map<int, int> g_n, g_sum;//число оценок и их сумма
- map<string, int> number_of_group;
- map<string, int> s_2cnt, s_n, s_sum; //число двоек, оценок и их сумма для студента
- map<int, set<string>> group;
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- cout.tie(0);
- int q; cin >> q;
- int cnt(0);
- while (q--)
- {
- string c;
- cin >> c;
- if (c[1] == 'd') { // a d d
- string name;
- int g;
- cin >> name >> g;
- number_of_group[name] = g;
- group[g].insert(name);
- } else if (c[1] == 'e') { // d e lete
- string name; cin >> name;
- int ng = number_of_group[name];
- g_n[ng] -= s_n[name];
- g_sum[ng] -= s_sum[name];
- group[ng].erase(name);
- } else if (c[1] == 'a') { //m a rk
- string name; int mk;
- cin >> name >> mk;
- int ng = number_of_group[name];
- g_n[ng]++;
- g_sum[ng] += mk;
- s_n[name]++;
- s_sum[name] += mk;
- s_2cnt[name] += (mk == 2);
- if (s_2cnt[name] == 3) { // отчисление
- g_n[ng] -= s_n[name];
- g_sum[ng] -= s_sum[name];
- group[ng].erase(name);
- }
- } else {
- cout << "Query " << ++cnt << ":\n";
- if (c[1] == 'r') { //p r int
- int ng; cin >> ng;
- for (const string& name : group[ng])
- cout << name << '\n';
- } else { //average
- int ng; cin >> ng;
- cout << g_sum[ng] / __gcd(g_sum[ng], g_n[ng]);
- cout << '/';
- cout << g_n[ng] / __gcd(g_sum[ng], g_n[ng]);
- cout << '\n';
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement