Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- struct Person {
- string name;
- string surname;
- int age;
- int tcome;
- int tleave;
- };
- int timeToMinuts(string t) {
- int h = 0, m = 0;
- if (t[2] == ':') {
- h = (t[0] - '0') * 10 + (t[1] - '0');
- m = (t[3] - '0') * 10 + (t[4] - '0');
- } else {
- h = (t[0] - '0');
- m = (t[2] - '0') * 10 + (t[3] - '0');
- }
- return h * 60 + m;
- }
- void addNotSame(int *arr, int n, int elem) {
- bool repeats = false;
- for (int i = 0; i < n; i++) {
- if (arr[i] == elem) {
- repeats = true;
- }
- }
- if (!repeats) {
- arr[n] = elem;
- }
- }
- Person *findMaxGuests(Person *party, int *t, int n, int p, int *r, int *mt) {
- int max = 0;
- int maxtime = 0;
- for (int i = 0; i < p; i++) {
- int guests = 0;
- for (int j = 0; j < n; j++) {
- if (t[i] >= party[j].tcome && t[i] <= party[j].tleave) {
- guests += 1;
- }
- if (guests > max) {
- max = guests;
- maxtime = t[i];
- }
- }
- }
- *r = max;
- *mt = maxtime;
- Person *res = new Person[max];
- int m = 0;
- for (int i = 0; i < n; i++) {
- if (maxtime >= party[i].tcome && maxtime <= party[i].tleave) {
- res[m] = party[i];
- m++;
- }
- }
- return res;
- }
- void sortByAge(Person *p, int n) {
- for (int i = 0; i < n; i++) {
- for (int j = i + 1; j < n; j++) {
- if (p[i].age > p[j].age) {
- swap(p[i], p[j]);
- }
- }
- }
- }
- int main() {
- int n, p = 0;
- cin >> n;
- int *times = new int[2 * n];
- Person *party = new Person[n];
- for (int i = 0; i < n; i++) {
- string a, b;
- cin >> party[i].name >> party[i].surname >> party[i].age >> a >> b;
- party[i].tcome = timeToMinuts(a);
- addNotSame(times, p, party[i].tcome);
- p++;
- party[i].tleave = timeToMinuts(b);
- addNotSame(times, p, party[i].tleave);
- p++;
- }
- int guestsn, maxt;
- Person *r = findMaxGuests(party, times, n, p, &guestsn, &maxt);
- sortByAge(r, guestsn);
- cout << guestsn << endl;
- // cout << maxt / 60 << ":" << maxt % 60 << endl;
- for (int i = 0; i < guestsn; i++) {
- cout << r[i].name << " " << r[i].surname << " " << r[i].age << " ";
- cout << r[i].tcome / 60 << ":" << r[i].tcome % 60 << " ";
- cout << r[i].tleave / 60 << ":" << r[i].tleave % 60 << endl;
- }
- delete[] r;
- delete[] party;
- delete[] times;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement