uses crt;
type date=record
fm:string[20];
gd:1990..2000;
ms:1..12;
dn:1..31;
end;
var m:array[1..100] of date;
n,i,j,im,k:byte;
begin
clrscr;
write('Количество учеников n=');
readln(n);
writeln('Введите данные о ',n,' учениках:');
for i:=1 to n do
begin
writeln('Ученик ',i);
repeat
write(' Фамилия: ');readln(m[i].fm);
write(' Год (1990-2000):');readln(m[i].gd);
until (m[i].gd>=1990)and(m[i].gd<=2000);
repeat
write(' Месяц (1-12): ');readln(m[i].ms);
until m[i].ms in [1..12];
repeat
k:=0;
write(' День: ');readln(m[i].dn);
if ((m[i].ms in [1,3,5,7,8,10,12])and not(m[i].dn in [1..31]))
or ((m[i].ms in [4,6,9,11])and not(m[i].dn in [1..30]))
or ((m[i].ms=2)and(m[i].gd mod 4=0)and not(m[i].dn in [1..29]))
or ((m[i].ms=2)and(m[i].gd mod 4<>0)and not(m[i].dn in [1..28]))then k:=1;
until k=0;
end;
clrscr;
im:=1;
for i:=1 to n do
if (m[i].gd>m[im].gd)or((m[i].gd=m[im].gd)and(m[i].ms>m[im].ms))
or((m[i].gd=m[im].gd)and(m[i].ms=m[im].ms)and(m[i].dn>m[im].dn)) then im:=i;
write('Самый молодой: ',m[im].fm);
readln
end.