L1-043 阅览室 分数 20
注意有大坑:题目没有说,如果同一个书号出现两个'S',按照后者记时(一本书在未归还时被多次借出,记录取后者)。
// long
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
int main()
{
int n;
cin >> n;
map<int, pair<bool,int> > borw;
int sumtime = 0, amount = 0;
int cnt = 0;
while(cnt < n)
{
int bnum;
char c, emp;
int n1, n2;
cin >> bnum >> c >> n1 >> emp >> n2;
if(bnum > 1000) continue;
if(bnum == 0)
{
++ cnt;
cout << amount << " " << (amount == 0 ? 0 : round((double)(sumtime) / (double)(amount))) << endl;
amount = 0;
sumtime = 0;
borw.clear();
continue;
}
if(c == 'S')
{
// 此处不能加限制条件,否则测试点1会被卡
//if(borw[bnum].x == false)
//{
borw[bnum].x = true;
borw[bnum].y = n1 * 60 + n2;
//}
}
else if(c == 'E')
{
if(borw[bnum].x == true)
{
sumtime += n1 * 60 + n2 - borw[bnum].y;
borw[bnum].x = false;
borw[bnum].y = 0;
++ amount;
}
}
}
return 0;
}
浙公网安备 33010602011771号