解説
まず、今回の問題は出力形式が特殊になっている。
こういう時はscanfを使うといいだろう。
scanf("%d:%d %d:%d",&H,&M,&h,&m)と書けばよい。
次に睡眠時間のためだが、求めやすさのため分に直して求める。
どういうことかというと、ある変数$T$を$H\times 60+M$として求めるということだ。
これで$T=H\times 60+M$、$t=H\times 60+m$として求める。
で、これからどうやって睡眠した時間を数えるかというと、
・$T\leqq t$→$t-T$
・$T>t$→$t-T+1440$
これをそれぞれ求めて、最後にその総和を求めれば終わり。
C++での解答例
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,sum=0;cin>>n;
for(int i=0;i<n;i++){
int H,M,h,m;
scanf("%d:%d %d:%d",&H,&M,&h,&m);
getchar();
int T=H*60+M,t=h*60+m;
if(T<=t)sum+=t-T;
else sum+=t-T+1440;
}
cout<<sum<<endl;
}