2016-08-08 USACO USACO 1.2 Milking Cows Simple brutal force search with intervals. #include <iostream>#include <fstream>#include <string>#include <vector>#include <algorithm>using namespace std;struct Interval { int start, end; Interval(int start, int end) : start(start), end(end) {} bool operator < (const Interval& interval) const { return start < interval.start; }};int main () { string str; ifstream fin ("milk2.in"); ofstream fout ("milk2.out"); vector<Interval> intervals; int farmers; fin >> farmers; for (int i = 0; i < farmers; ++i) { int start, end; fin >> start >> end; intervals.emplace_back(Interval(start, end)); } std::sort(intervals.begin(), intervals.end()); int maxOverlap = 0, maxGap = 0; Interval it = intervals[0]; for (int i = 1; i < intervals.size(); ++i) { if (intervals[i].start > it.end) { // none overlap maxOverlap = std::max(maxOverlap, it.end - it.start); maxGap = std::max(maxGap, intervals[i].start - it.end); it = intervals[i]; } else { it.end = std::max(it.end, intervals[i].end); } } maxOverlap = std::max(maxOverlap, it.end - it.start); fout << maxOverlap << " " << maxGap << std::endl; return 0;} Newer USACO 1.2 Transformation Older USACO 1.1 Broken Necklace