#include #include #include #include #include #include using namespace std; void getDateTime(int d,char *t,int &date,int &hour,int &minute) { date=d; char *p=strchr(t,':'); *p='\0'; hour=atol(t); p++; minute=atol(p); } struct DATE{ int d; int h; int m; DATE(){ d=h=m=0; } DATE(int D,int H,int M){ d=D; h=H; m=M; } bool operator<(DATE &date){ if (d(DATE &date){ if (d>date.d){ return true; }else if (d==date.d){ if (h>date.h){ return true; }else if (h==date.h){ if (m>date.m){ return true; } } } return false; } bool operator==(DATE &date){ return d==date.d && h==date.h && m==date.m; } void addMinute(int minute){ m+=1; if (m==60){ h++; m=0; } if (h==24){ d++; h=0; } } }; struct P{ int id; DATE D; DATE O; P(int ID,DATE d,DATE o){ id=ID; D=d; O=o; } DATE& getD(){ return D; } DATE& getO(){ return O; } bool operator<(P &p) { if (O(P &p){ if (D>p.O){ return true; } return false; } }; bool Include(vector

&PList,P &p) { int i; bool bInsert=true; for (i=0;ip){ continue; }else{ bInsert=false; break; } } return bInsert; } bool LE(P &l,P &r) { if (l> &PList,int i,int j) { int len1=PList[i].size(); int len2=PList[j].size(); if (len1==0 || len2==0){ return; } int I,J; if (len1>=len2){ I=i; J=j; }else{ I=j; J=i; } for (int y=0;y>n>>m; int d,o; string t1,t2; int i,j; vector

p; for (i=0;i>d>>t1>>o>>t2; int dateD,hourD,minuteD; int dateO,hourO,minuteO; getDateTime(d,(char*)t1.c_str(),dateD,hourD,minuteD); getDateTime(o,(char*)t2.c_str(),dateO,hourO,minuteO); p.push_back(P(i+1,DATE(dateD,hourD,minuteD),DATE(dateO,hourO,minuteO))); } vector> PList(m); for (i=0;i num; for (i=0;i> PList1(m); for (i=0;i0){ PList1[i].push_back(PList[i][j]); } } } for (i=0;i0){ PList[i].push_back(PList1[i][j]); } } num.push_back(PList[i].size()); } sort(num.begin(),num.end(),greater()); int aw=0; for (i=0;i