usaco milk2

来源:互联网 发布:python 发送syslog 编辑:程序博客网 时间:2024/06/05 20:18
#include<stdio.h>int x[20010],f[20010],e,a[10001],b[10001];void qs(int l,int r){int i,j,mid,t;i=l;j=r;mid=x[(l+r)/2];while (i<j) {while (x[i]<mid) i++;while (x[j]>mid) j--;if (i<=j) {t=x[i];x[i]=x[j];x[j]=t;i++;j--;}}if (l<j) qs(l,j);if (i<r) qs(i,r);}int find(int n){int i;for (i=1;i<=e;i++) if (n==x[i]) {return i;}}int main(){freopen("milk2.in","r",stdin);freopen("milk2.out","w",stdout);int n,i,t;scanf("%d",&n);for (i=1;i<=n;i++) {scanf("%d%d",&a[i],&b[i]);x[++e]=a[i];x[++e]=b[i];}qs(1,e);x[0]=1000001;for (i=1;i<=n;i++) {t=find(a[i]);while (x[t]!=b[i]) {f[t]=1;t++;}}int sum=0,maxfull=0,maxnone=0,zt=-1;for (i=1;i<e;i++) {if (f[i]) {if (zt==1) sum+=(x[i+1]-x[i]);   else {if (sum>maxnone) maxnone=sum; sum=x[i+1]-x[i];zt=1;}} else {if (zt==0) sum+=(x[i+1]-x[i]);   else {if (sum>maxfull) maxfull=sum; sum=x[i+1]-x[i];zt=0;}}}if (zt==1 && sum>maxfull) maxfull=sum;if (zt==0 && sum>maxnone) maxnone=sum;printf("%d %d\n",maxfull,maxnone);return 0;}

1 0