hihocoder #1057

来源:互联网 发布:河北省软件企业 编辑:程序博客网 时间:2024/06/06 12:30

程序要满足

1、不能交叉,即一个程序要么完全包含在另一程序时间里面,要么互不相交

2、时间严格递增


#include<iostream>  #include<map>#include<string.h>   #include<algorithm>  #include<fstream>#include<cmath>  #include<vector>#include<stack>#include<map>#include<math.h>using namespace std;  #define lch(i) ((i)<<1)  #define rch(i) ((i)<<1|1)  #define sqr(i) ((i)*(i))  #define pii pair<int,int>  #define mp make_pair  #define FOR(i,b,e) for(int i=b;i<=e;i++)  #define FORE(i,b,e) for(int i=b;i>=e;i--)  #define ms(a)   memset(a,0,sizeof(a))  const int maxnum =20009;const  int  mod = 10007;int n,m;class Tstamp{public:int h,min,sec;Tstamp(){}Tstamp(int a,int b,int c):h(a),min(b),sec(c){}Tstamp(char a[9]){h=(a[0]-'0')*10+(a[1]-'0');min=(a[3]-'0')*10+(a[4]-'0');sec=(a[6]-'0')*10+(a[7]-'0');}void operator=(const Tstamp& a){h=a.h;min=a.min;sec=a.sec;}Tstamp& operator-=(const Tstamp& b){if(sec<b.sec){min-=1;sec+=60;}sec-=b.sec;if(min<b.min){h-=1;min+=60;}min-=b.min;h-=b.h;return *this;}};Tstamp operator-(Tstamp& a, Tstamp& b){return a-=b;}struct node{char name[256];Tstamp st,exi;node(){}node(char t[9]):st(t){}}pro[maxnum];node *pos,*root;map<string,node*> p2node;stack<string>  stamp;int main()    {  #ifdef _DEBUG_fstream fin("G:/1.txt");#else#define fin cin#endiffin>>n;char name[256],timestamp[9],action[6];bool flag=0;int last = 0,now;root = new node;pos=root;int pronum=0;FOR(i,1,n){fin>>name>>timestamp>>action;if(flag)continue;now=((timestamp[0]-'0')*10+(timestamp[1]-'0'))*3600+((timestamp[3]-'0')*10+(timestamp[4]-'0'))*60+(timestamp[6]-'0')*10+(timestamp[7]-'0');if(now<last){flag=1;continue;}last=now;if(action[0]=='S'){if(p2node[name]!=0){flag=1;continue;}pro[++pronum].st=timestamp;strcpy(pro[pronum].name,name);stamp.push(name);p2node[name]=&pro[pronum];}if(action[0]=='E'){if(stamp.empty()){flag=1;continue;}string last= stamp.top();stamp.pop();if(strcmp(last.c_str(),name)!=0){flag=1;continue;}p2node[last]->exi=Tstamp(timestamp)-p2node[last]->st;}}if(!stamp.empty()||flag)printf("Incorrect performance log\n");else{FOR(i,1,pronum){printf("%s %02d:%02d:%02d\n",pro[i].name,pro[i].exi.h,pro[i].exi.min,pro[i].exi.sec);}}return 0;  } 


0 0
原创粉丝点击