summaryrefslogtreecommitdiff
path: root/1.3/milk2.c
diff options
context:
space:
mode:
Diffstat (limited to '1.3/milk2.c')
-rw-r--r--1.3/milk2.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/1.3/milk2.c b/1.3/milk2.c
new file mode 100644
index 0000000..4573334
--- /dev/null
+++ b/1.3/milk2.c
@@ -0,0 +1,58 @@
+/*
+ID: mytbk921
+LANG: C
+TASK: milk2
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#define MAXN 5000
+#define max(a,b) ((a)>(b))?(a):(b)
+
+typedef struct
+{
+ int begin,end;
+}TimeTab,*pTimeTab;
+
+int comp(pTimeTab a,pTimeTab b)
+{
+ return a->begin-b->begin;
+}
+
+int main()
+{
+ int N;
+ int max_milk,max_nomilk;
+ int tBegin,tEnd;
+ int i;
+ TimeTab milktime[MAXN];
+
+ FILE *fin=fopen("milk2.in","r");
+ FILE *fout=fopen("milk2.out","w");
+ fscanf(fin,"%d",&N);
+ for (i=0;i<N;++i)
+ fscanf(fin,"%d%d",&milktime[i].begin,&milktime[i].end);
+ fclose(fin); //input complete
+ qsort(milktime,N,sizeof(TimeTab),(int(*)(const void*,const void*))comp);
+
+ max_milk=milktime[0].end-milktime[0].begin;
+ max_nomilk=0;
+ tBegin=milktime[0].begin;tEnd=milktime[0].end;
+ for (i=0;i<N;i++){
+ if (tEnd>=milktime[i].begin)
+ tEnd=max(tEnd,milktime[i].end);
+ else{
+ max_milk=max(tEnd-tBegin,max_milk);
+ max_nomilk=max(milktime[i].begin-tEnd,max_nomilk);
+ tBegin=milktime[i].begin;
+ tEnd=milktime[i].end;
+ }
+ if (i==N-1)
+ max_milk=max(tEnd-tBegin,max_milk);
+ }
+ fprintf(fout,"%d %d\n",max_milk,max_nomilk);
+ fclose(fout); //output complete
+ return 0;
+}
+
+