10分代码求助
  • 板块灌水区
  • 楼主fish_gugu
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/4/28 18:20
  • 上次更新2023/10/23 17:21:17
查看原帖
10分代码求助
759436
fish_gugu楼主2023/4/28 18:20

题目传送门

代码如下

#include <bits/stdc++.h>
using namespace std;

int cnt = -1,t;
struct time
{
    int id,h,m,s,ms,tn;
    string c[105];
}a[105];

int main()
{
    while(true)
    {
        int line = 1;
        cnt += 2;
        scanf("%d\n%d:%d:%d,%d --> ",&a[cnt].id,&a[cnt].h,&a[cnt].m,&a[cnt].s,&a[cnt].ms);
        scanf("%d:%d:%d,%d",&a[cnt + 1].h,&a[cnt + 1].m,&a[cnt + 1].s,&a[cnt + 1].ms);
        while(true)
        {
            string s;
            getline(cin,s);
            a[cnt].c[line] = s;
            if(a[cnt].c[line].size() == 1 || a[cnt].c[line][0] == '#') break;
            line++;
        }
        a[cnt].tn = line,a[cnt].tn -= 1;
        if(a[cnt].c[line][0] == '#') break;
    }
    cnt++;
    cin >> t;
    if(t < 0)
    {
        t *= -1;
        for(int i = 1;i <= cnt;i++)
        {
            if(a[i].ms - t >= 0) a[i].ms -= t;
            else
            {
                a[i].ms -= t;
                while(a[i].ms < 0) a[i].ms += 1000,a[i].s -= 1;
                if(a[i].s < 0)
                {
                    while(a[i].s < 0) a[i].s += 60,a[i].m -= 1;
                    if(a[i].m < 0)
                    {
                        while(a[i].m < 0) a[i].m += 60,a[i].h -= 1;
                    }
                }
            }
        }
    }
    else
    {
        for(int i = 1;i <= cnt;i++)
        {
            if(a[i].ms + t < 1000) a[i].ms += t;
            else
            {
                a[i].ms += t;
                while(a[i].ms >= 1000) a[i].ms -= 1000,a[i].s += 1;
                if(a[i].s >= 60)
                {
                    while(a[i].s >= 60) a[i].s -= 60,a[i].m += 1;
                    if(a[i].m >= 60)
                    {
                        while(a[i].m >= 60) a[i].m -= 60,a[i].h += 1;
                    }
                }
            }
        }
    }
    for(int i = 1;i <= cnt;i += 2)
    {
        if(a[i].id != 0) cout << a[i].id << endl;
        if(a[i].id != 0) printf("%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d\n",a[i].h,a[i].m,a[i].s,a[i].ms,a[i + 1].h,a[i + 1].m,a[i + 1].s,a[i + 1].ms);
        if(a[i].id != 0) for(int j = 1;j <= a[i + 2].tn;j++) cout << a[i + 2].c[j];
        if(i != cnt - 1 && i != cnt - 2) cout << endl;
        if(i == cnt || i == cnt - 1) 
        {
            cout << '#' << " ";
            break;
        }
    }
    return 0;
}

本蒟不知道如何去掉 \r

2023/4/28 18:20
加载中...