Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //505 - Ошибки
- #include <cstdio>
- #include <string>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int main(void) {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int n, m;
- scanf("%d%d", &n, &m);
- vector< vector<string> > members(n);
- vector<int> times(n);
- int a, b, c;
- char buf[17];
- vector<string> memb(0);
- for (int i = 0; i < n; ++ i) {
- scanf("%d:%d:%d%s", &a, &b, &c, buf);
- times[i] = a * 3600 + b * 60 + c;
- string s = string(buf);
- if (i == 0)
- members[i] = vector<string>(1, s);
- else if (members[i - 1].empty()) {
- members[i] = vector<string>(1, s);
- }
- else {
- int id = find(members[i - 1].begin(), members[i - 1].end(), s) - members[i - 1].begin();
- memb = members[i - 1];
- if (members[i - 1][id] == s)
- memb.erase(memb.begin() + id);
- else
- memb.push_back(s);
- members[i] = memb;
- }
- if (!memb.empty())
- memb.clear();
- }
- for (int i = 0; i < m; ++ i) {
- scanf("%d:%d:%d", &a, &b, &c);
- int x = a * 3600 + b * 60 + c;
- int f;
- int y = lower_bound(times.begin(), times.end(), x) - times.begin() - 1;
- int z = upper_bound(times.begin(), times.end(), x) - times.begin() - 1;
- if (members[y].size() > members[z].size())
- f = y;
- else
- f = z;
- printf("%lu", members[f].size());
- for (int i = 0; i < members[f].size(); ++ i) {
- cout << " " << members[f][i];
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement