// UVa 10191 - Longest Nap
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct par {
int first;
int second;
};
bool operator<(par x, par y) {
return x.first < y.first;
}
string dummy;
int main() {
int n;
int d = 0;
while (cin >> n) {
d++;
vector<par> time;
for (int i = 0; i < n; i++) {
string t1, t2;
cin >> t1 >> t2;
getline(cin, dummy);
int a = ((t1[0] - '0') * 10 + t1[1] - '0') * 60 + (t1[3] - '0') * 10 + t1[4] - '0';
int b = ((t2[0] - '0') * 10 + t2[1] - '0') * 60 + (t2[3] - '0') * 10 + t2[4] - '0';
par p = { a, b };
time.push_back(p);
}
sort(time.begin(), time.end());
int longestnap = time[0].first - 10 * 60;
int starts = 10 * 60;
for (int i = 1; i < n; i++) {
if (time[i].first - time[i - 1].second > longestnap) {
longestnap = time[i].first - time[i - 1].second;
starts = time[i - 1].second;
}
}
if (18 * 60 - time[n - 1].second > longestnap) {
longestnap = 18 * 60 - time[n - 1].second;
starts = time[n - 1].second;
}
cout << "Day #" << d << ": the longest nap starts at ";
cout << starts / 60 << ":";
if (starts % 60 < 10)
cout << "0";
cout << starts % 60 << " and will last for ";
if (longestnap >= 60)
cout << longestnap / 60 << " hours and ";
cout << longestnap % 60 << " minutes." << endl;
}
}
Friday, June 19, 2015
UVa 10191 - Longest Nap
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment