StoneHaos

(505)

Nov 3rd, 2019
175
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //505 - Ошибки
  2. #include <cstdio>
  3. #include <string>
  4. #include <iostream>
  5. #include <vector>
  6. #include <algorithm>
  7. using namespace std;
  8.  
  9. int main(void) {
  10.     freopen("input.txt", "r", stdin);
  11.     freopen("output.txt", "w", stdout);
  12.  
  13.     int n, m;
  14.     scanf("%d%d", &n, &m);
  15.     vector< vector<string> > members(n);
  16.     vector<int> times(n);
  17.     int a, b, c;
  18.     char buf[17];
  19.     vector<string> memb(0);
  20.  
  21.     for (int i = 0; i < n; ++ i) {
  22.         scanf("%d:%d:%d%s", &a, &b, &c, buf);
  23.         times[i] = a * 3600 + b * 60 + c;
  24.         string s = string(buf);
  25.         if (i == 0)
  26.             members[i] = vector<string>(1, s);
  27.         else if (members[i - 1].empty()) {
  28.             members[i] = vector<string>(1, s);
  29.         }
  30.         else {
  31.             int id = find(members[i - 1].begin(), members[i - 1].end(), s) - members[i - 1].begin();
  32.             memb = members[i - 1];
  33.             if (members[i - 1][id] == s)
  34.                 memb.erase(memb.begin() + id);
  35.             else
  36.                 memb.push_back(s);
  37.             members[i] = memb;
  38.         }
  39.         if (!memb.empty())
  40.             memb.clear();
  41.     }
  42.  
  43.     for (int i = 0; i < m; ++ i) {
  44.         scanf("%d:%d:%d", &a, &b, &c);
  45.         int x = a * 3600 + b * 60 + c;
  46.         int f;
  47.         int y = lower_bound(times.begin(), times.end(), x) - times.begin() - 1;
  48.         int z = upper_bound(times.begin(), times.end(), x) - times.begin() - 1;
  49.         if (members[y].size() > members[z].size())
  50.             f = y;
  51.         else
  52.             f = z;
  53.         printf("%lu", members[f].size());
  54.         for (int i = 0; i < members[f].size(); ++ i) {
  55.             cout << " " << members[f][i];
  56.         }
  57.         printf("\n");
  58.     }
  59.     return 0;
  60. }
RAW Paste Data