Advertisement
Guest User

task D

a guest
May 24th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. #include <map>
  2. #include <set>
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. map<int, int> g_n, g_sum;//число оценок и их сумма
  9. map<string, int> number_of_group;
  10. map<string, int> s_2cnt, s_n, s_sum; //число двоек, оценок и их сумма для студента
  11. map<int, set<string>> group;
  12.  
  13. int main()
  14. {
  15.     ios_base::sync_with_stdio(false);
  16.     cin.tie(0);
  17.     cout.tie(0);
  18.     int q; cin >> q;
  19.     int cnt(0);
  20.     while (q--)
  21.     {
  22.         string c;
  23.         cin >> c;
  24.         if (c[1] == 'd') { // a d d
  25.             string name;
  26.             int g;
  27.             cin >> name >> g;
  28.             number_of_group[name] = g;
  29.             group[g].insert(name);
  30.         } else if (c[1] == 'e') { // d e lete
  31.             string name; cin >> name;
  32.             int ng = number_of_group[name];
  33.             g_n[ng] -= s_n[name];
  34.             g_sum[ng] -= s_sum[name];
  35.             group[ng].erase(name);
  36.         } else if (c[1] == 'a') { //m a rk
  37.             string name; int mk;
  38.             cin >> name >> mk;
  39.             int ng = number_of_group[name];
  40.             g_n[ng]++;
  41.             g_sum[ng] += mk;
  42.             s_n[name]++;
  43.             s_sum[name] += mk;
  44.             s_2cnt[name] += (mk == 2);
  45.             if (s_2cnt[name] == 3) { // отчисление
  46.                 g_n[ng] -= s_n[name];
  47.                 g_sum[ng] -= s_sum[name];
  48.                 group[ng].erase(name);
  49.             }
  50.         } else  {
  51.             cout << "Query " << ++cnt << ":\n";
  52.             if (c[1] == 'r') { //p r int
  53.                 int ng; cin >> ng;
  54.                 for (const string& name : group[ng])
  55.                     cout << name << '\n';
  56.             } else { //average
  57.                 int ng; cin >> ng;
  58.                 cout << g_sum[ng] / __gcd(g_sum[ng], g_n[ng]);
  59.                 cout << '/';
  60.                 cout << g_n[ng] / __gcd(g_sum[ng], g_n[ng]);
  61.                 cout << '\n';
  62.             }
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement