HDU 4509
很简单的排序题而已。
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int M=500005; struct Matter{ int bgn,en; bool operator <(const Matter &a) const{ if(bgn<a.bgn) return true; return false; } }Ma[M]; int main(){ int n,bh,bm,eh,em; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d:%d %d:%d",&bh,&bm,&eh,&em); Ma[i].bgn=bh*60+bm; Ma[i].en=eh*60+em; } sort(Ma,Ma+n); int en=0; int ans=0; for(int i=0;i<n;i++){ if(Ma[i].bgn>en){ ans+=(Ma[i].bgn-en); en=Ma[i].en; } else if(Ma[i].bgn<=en){ if(Ma[i].en>en) en=Ma[i].en; } } if(en<1440) ans+=1440-en; printf("%d\n",ans); } return 0; }