#include<bits/stdc++.h>
using namespace std;
struct Record
{
char number[9];
int seconds;
char status[4];
}r[10000];
bool cmp(Record r1, Record r2)
{
if(strcmp(r1.number, r2.number))
return strcmp(r1.number, r2.number) < 0;
else
return r1.seconds < r2.seconds;
}
struct Car
{
char number[9];
int in_s[10];
int out_s[10];
int delta_s;
int period = 0;
}c[5000];
int con = 0;
bool cmp_d(Car c1, Car c2)
{
if (c1.delta_s != c2.delta_s)
return c1.delta_s > c2.delta_s;
else
return strcmp(c1.number, c2.number) < 0;
}
int main()
{
int n, k;
cin >> n >> k;
for(int i = 0; i < n; i++)
{
int hh,mm,ss;
scanf("%s %d:%d:%d %s", r[i].number, &hh, &mm, &ss, r[i].status);
r[i].seconds = hh * 3600 + mm * 60 + ss;
}
sort(r, r + n, cmp);
char now_num[9];
strcpy(now_num, r[0].number);
int in = 0, out = 0;
bool find_in = 0, find_out = 0;
for(int i = 0; i < n; i++)
{
if (strcmp(r[i].number, now_num))
{
strcpy(now_num, r[i].number);
con++;
find_in = 0;
find_out = 0;
}
if (r[i].status[0] == 'i')
{
find_in = 1;
in = i;
}
else if (r[i].status[0] == 'o' && find_in && !find_out )
{
out = i;
strcpy(c[con].number, now_num);
c[con].in_s[c[con].period] = r[in].seconds;
c[con].out_s[c[con].period] = r[out].seconds;
c[con].delta_s += r[out].seconds - r[in].seconds;
c[con].period++;
find_in = 0;
find_out = 0;
}
}
con++;
for(int i = 0; i < k; i++)
{
int hh, mm, ss;
scanf("%d:%d:%d", &hh, &mm, &ss);
int seconds = hh * 3600 + mm * 60 + ss;
int sum = 0;
for(int ii = 0; ii < con; ii++)
{
for(int iii = 0; iii < c[ii].period; iii++)
if (c[ii].in_s[iii] <= seconds && c[ii].out_s[iii] > seconds)
{
sum++;
break;
}
}
printf("%d\n", sum);
}
sort(c, c + con, cmp_d);
int i = 0;
do
{
printf("%s ", c[i].number);
i++;
}while(i < con && c[i].delta_s == c[i - 1].delta_s);
printf("%02d:%02d:%02d", c[i - 1].delta_s / 3600, c[i - 1].delta_s % 3600 / 60,
c[i - 1].delta_s % 60);
return 0;
}
08-12
160