USACO Section 1.2 Milking Cows

来源:互联网 发布:医疗与大数据 编辑:程序博客网 时间:2024/06/05 02:30

大意:求最长连续区间,最长不连续区间。

/*ID:g0feng1LANG:C++TASK:milk2*/#include <iostream>#include <fstream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <map>#include <algorithm>using namespace std;FILE *fin = fopen("milk2.in", "r");FILE *fout = fopen("milk2.out", "w");const int maxn = 5010;const int INF = 0x3f3f3f3f;int n;int sa;struct node{int x, y;}A[maxn];int cmpx(node a, node b){return a.x < b.x;}int cmpy(node a, node b){return a.y < b.y;}void read_case(){fscanf(fin, "%d", &n);for(int i = 0; i < n; i++) fscanf(fin, "%d%d", &A[i].x, &A[i].y);sort(A, A+n, cmpx);A[n].x = INF, A[n].y = INF;}int cal_max(){int ans;int res = 0;for(int i = 0; i < n; i++){int ans = A[i].y - A[i].x;int y = A[i].y;for(int j = i+1; j < n; j++){if(y >= A[j].x){if(y < A[j].y){ans += A[j].y-y;y = A[j].y;}}}res = max(ans, res);}return res;}int cal_min(){sort(A, A+n, cmpy);int ans = 0;int x = A[n-1].x;for(int i = n-2; i >= 0; i--){if(x > A[i].y){int t = x - A[i].y;ans = max(ans, t);}else if(A[i].x < x) x = A[i].x;}return ans;}void solve(){read_case();int maxv = cal_max(), minv = cal_min();fprintf(fout, "%d %d\n", maxv, minv);}int main(){solve();return 0;}


原创粉丝点击