第三题 PVP游戏
#include <iostream>
#include <vector>
#include <string>
#include "algorithm"
using namespace std;
/*
1
4
3 1 10:00:00-15:00:00
1 2 08:00:00-14:00:00 18:00:00-20:00:00
6 3 09:00:00-11:00:00 13:00:00-14:00:00 17:00:00-22:00:00
7 3 09:00:00-10:30:00 13:30:00-14:00:00 17:30:00-22:00:00
5
2 19:03:30
3 14:02:23
1 02:00:00
5 17:00:00
4 13:13:13
*/
//思路:全转为从周一开始的秒
int ChangeTime(int n, string str) {
int hour = 0;
int min = 0;
int sec = 0;
//int len = str.size;
hour = str[0] > 0 ? ((str[0]-'0' )* 10 + str[1]-'0') : str[1]-'0';
min = str[3] > 0 ? ((str[3]-'0' )* 10 + str[4]-'0') : str[4]-'0';
sec = str[6] > 0 ? ((str[6] -'0')* 10 + str[7]-'0') : str[7]-'0';
int dataTime = (n-1)*24*60*60 + hour * 3600 + min * 60 + sec;
return dataTime;
}
int main() {
int T=0;
cin >> T;
vector <int> Time;
while (T--){
int K=0; // 一星期开放的天数
cin >> K;
for (int j = 0; j < K; j++) {
int W = 0;
int M = 0;
string time;
cin >> W >> M;
for (int m = 0; m < M; m++) {
cin >> time;
Time.push_back(ChangeTime(W, time.substr(0,8)));
Time.push_back(ChangeTime(W, time.substr(9, 8)));
}
}
}
sort(Time.begin(), Time.end());
// 判断查询
int C = 0;
cin >> C;
vector <int> TimeNow;
for (int i = 0; i < C; i++) {
int week = 0;
string clock;
cin >> week >> clock;
int timeNow = ChangeTime(week, clock);
TimeNow.push_back(timeNow);
}
int len = Time.size();
for(int i=0;i<TimeNow.size();++i){
for (int j = 0; j < len; ++j) {
if (Time[len - 1] < TimeNow[i]) {
cout << 7 * 24 * 3600 - TimeNow[i] + Time[0] << endl;
break;
}
if (Time[j] > TimeNow[i]) {
if (j % 2 == 0) {
cout << Time[j] - TimeNow[i] << endl;
break;
}
else {
cout << 0 << endl;
break;
}
}
}
}
}