#include<iostream> usingnamespace std; constint logn = 17; constint maxn = 100050; int fmax[maxn][logn+1], fmin[maxn][logn+1], Logn[maxn]; voidpre(){ Logn[1] = 0; Logn[2] = 1; for (int i = 3; i < maxn; i++) { Logn[i] = Logn[i / 2] + 1; } } intquerymax(int x,int y){ returnmax(fmax[x][Logn[y - x + 1]], fmax[y - (1 << Logn[y - x + 1]) + 1][Logn[y - x + 1]]); } intquerymin(int x,int y){ returnmin(fmin[x][Logn[y - x + 1]], fmin[y - (1 << Logn[y - x + 1]) + 1][Logn[y - x + 1]]); } intmain(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n,d,t; int a,b; int output = 0; char _; cin>>n>>d>>t; for (int i = 1; i <= n; i++){ cin>>a>>_>>b; fmax[i][0] = (a + 5) % 24 * 60 + b; fmin[i][0] = (a + 5) % 24 * 60 + b; } pre(); for (int j = 1; j <= logn; j++) for (int i = 1; i + (1 << j) - 1 <= n; i++){ fmax[i][j] = max(fmax[i][j - 1], fmax[i + (1 << (j - 1))][j - 1]); fmin[i][j] = min(fmin[i][j - 1], fmin[i + (1 << (j - 1))][j - 1]); }
for (int i = 1; i <= n; ++ i){ int mm = querymax( max(i - d + 1, 1), i); int mi = querymin( max(i - d + 1, 1), i); if (mm - mi > t){ output++; } } cout<<output<<endl; return0; }