#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<unordered_map>
using namespace std;
const int N = 105;
string s[N],c;
bool bj[N];
int kk = 0;
int h1[N], h2[N], m1[N], m2[N], s1[N], s2[N], t1[N], t2[N];
int main() {
int num,num1;
bool istime = false;
bool ones = true;
int length = 0;//存多少次时间
cin >> num;
num1 = num;
//cin.ignore();
getchar();//吃掉换行
while (getline(cin,c)) {
s[++kk] = c;
//特判
if (c == "#")break;
//判断c是否是数字编号num加过来的
int val = 0;
bool flag = false;
for (int i = 0; i < c.size(); i++) {
if (c[i] < '0' || c[i]>'9') {
flag = true;
break;
}
val = val * 10 + c[i] - '0';
}
if (!flag) {//是数字但不是编号
if (val != num)flag = true;
}
if (!flag||ones) {//是数字编号或第一次
num +=1 ;//编号加一
istime = true;//下一行输入是时间,要准备存储,之后再计算
}
if (istime) {
if (!ones)
getline(cin, c), s[++kk] = c;
bj[kk] = 1;//标记哪次输入
int sx = 0;//1,2,3,4,5,6,7,8为依次存入哪个数组
//存入时间
for (int i = 0; i < c.size(); i++) {
if (c[i] >= '0' && c[i] <= '9') {
val = 0;//记录时间
for (int j = i; j < c.size(); j++) {
if (c[j] >= '0' && c[j] <= '9') {
val = val * 10 + c[j] - '0';
}
else {
sx++;
i = j - 1;
break;
}
if (j == c.size() - 1) {//最后一位数字也要计入,不能忘了
sx++;
i = j;
break;
}
}
if (sx == 1)h1[++length] = val;
if (sx == 2)m1[length] = val;
if (sx == 3)s1[length] = val;
if (sx == 4)t1[length] = val;
if (sx == 5)h2[length] = val;
if (sx == 6)m2[length] = val;
if (sx == 7)s2[length] = val;
if (sx == 8)t2[length] = val;
}
}
istime = false;
ones = false;
}
}
int T,TT1,TT2;
cin >> T;
for (int i = 1; i <= length; i++) {
//将时间全部化成毫秒
TT1 = t1[i] + s1[i] * 1000 + m1[i] * 60000 + h1[i] * 3600000;
TT2 = t2[i] + s2[i] * 1000 + m2[i] * 60000 + h2[i] * 3600000;
TT1 += T;
TT2 += T;
//将毫秒化成规范时间
h1[i] = TT1 / 3600000;
m1[i]=TT1 % 3600000/60000;
s1[i] = TT1 % 3600000 % 60000/1000;
t1[i]= TT1 % 3600000 % 60000 % 1000;
h2[i] = TT2 / 3600000;
m2[i] = TT2 % 3600000 / 60000;
s2[i] = TT2 % 3600000 % 60000 / 1000;
t2[i] = TT2 % 3600000 % 60000 % 1000;
}
//输出
int j = 0;
cout << num1 << endl;
for (int i = 1; i <= kk; i++) {
if (bj[i]) {
//cout << h1[++j] << ":" << m1[j] << ":" << s1[j] << ":" << t1[j];
printf("%02d:%02d:%02d,%03d", h1[++j], m1[j], s1[j], t1[j]);
cout << " --> ";
//cout << h2[j] << ":" << m2[j] << ":" << s2[j] << ":" << t2[j];
printf("%02d:%02d:%02d,%03d", h2[j], m2[j], s2[j], t2[j]);
cout << endl;
}
else {
cout << s[i];
if (s[i] != "#")cout << endl;
}
}
return 0;
}
所有样例及测试数据本地均能过,但就是洛谷ide过不了,调了一下午,没查出来哪里出问题