Codeforces 16D. Logging

Codeforces 16D. Logging

传送门:https://codeforces.com/problemset/problem/16/D

题目大意:
题目会给你一串有顺序的时间,你需要做的是按照顺序判断,分实现这个序列最少需要几天,同时要注意到的是同一分钟最多只能有十行,如果有更多的,就需要到下一天这个时候来实现,同时,你要注意,12a.m.是凌晨12点。

主要想法:
我们两两比较相邻时间是否可以在同一天,如果可以,则不加一天,反之,加一天,同时我们应该注意到的是我们要记录相同时间点出现的次数,每十次加一天,并减十次。最后只需注意两个12点的问题就可以了。

	代码实现:
#include <bits/stdc++.h>

using namespace std;
stack <pair<int,int> >a;
int main()
{
    int n,m=0,i=1;
    cin>>n;
    while(n--)
    {
        int b,c;
        char d,e,f[40];
        scanf("  ");
        scanf("%c",&d);
        scanf("%d%c%d",&b,&e,&c);
        gets(f);
        b%=12;
        if(f[1]=='p')b+=12;
        if(m)
        {
            if((b<a.top().first)||(b==a.top().first&&c<a.top().second));
            else m--;
            if(b==a.top().first&&c==a.top().second)i++;
            else i=1;
        }
        if(i>10){m++;i-=10;}
        a.push({b,c});
        m++;
    }
    cout<<m<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值