Type data=record Day:integer; Mounth: integer; Year: integer; End; mode=(min,max); Var A: array[1..100] of data; n,i:integer; CurrData:string[12]; minData,maxData:data; function StrToData(S:String):data; var R:data; begin R.Day:=StrToInt(copy(s,1,2)); R.Mounth:=StrToInt(copy(s,4,2)); R.Year:=StrToInt(copy(s,7,4)); result:=R; end; function CompData(data1,data2:data; m:mode):data; begin case m of min: begin if data1.Yeardata2.Year then result:=data1 else if data1.Year=data2.Year then if data1.Mounth>data2.Mounth then result:=data1 else if data1.Mounth=data2.Mounth then if data1.Day>data2.Day then result:=data1 else result:=data2 else result:=data2 else result:=data2; end; end; end; function PrintData(D:data):string; var s:String; begin S:=''; if D.day div 10 =0 then S:=S+'0'+IntToStr(D.day) else S:=S+IntToStr(D.day); S:=S+'.'; if D.Mounth div 10 =0 then S:=S+'0'+IntToStr(D.Mounth) else S:=S+IntToStr(D.Mounth); S:=S+'.'; if D.Year div 10 =0 then S:=S+'0'+IntToStr(D.Year) else S:=S+IntToStr(D.Year); result:=S; end; begin Readln(N); // randomize; for i:=1 to n do begin ReadLn(CurrData); A[i]:=StrToData(CurrDada); // A[i].Day:=random(30)+1; // A[i].Mounth:=random(11)+1; // A[i].Year:=random(16)+2000; end; minData:=A[1]; maxData:=A[1]; for i:=2 to n do begin minData:=CompData(minData,A[i],min); maxData:=CompData(maxData,A[i],max); end; Writeln('min = '+PrintData(minData)); Writeln('max = '+PrintData(maxData)); end.