GAME3112 - Ngày 31 tháng 12

Tác giả: ladpro98

Ngôn ngữ: Pascal

program GAME3112;
uses    math;
const   lim: array[0..12] of longint = (0,31,29,31,30,31,30,31,31,30,31,30,31);
        lose = 0;
        win = 1;
        fi = '';
type    e=record
                d,m:longint;
        end;
var     n,m,day,month,i:longint;
        f:array[0..100,0..100] of longint;
        next:array[0..100,0..100] of e;
        inp:text;

procedure Prev(var i,j:longint);
begin
        if i>1 then dec(i)
        else begin
                dec(j);
                i:=lim[j];
        end;
end;

begin
        assign(inp,fi);reset(inp);
        readln(inp,n,m);
        f[31,12]:=win;
        day:=30;month:=12;
        while month>0 do begin
                //writeln(day,' ',month);
                f[day,month]:=lose;
                for i:=day+1 to lim[month] do
                if f[i,month]=lose then begin
                        f[day,month]:=win;
                        next[day,month].d:=i;
                        next[day,month].m:=month;
                end;
                for i:=month+1 to 12 do
                if day<=lim[i] then
                if f[day,i]=lose then begin
                        f[day,month]:=win;
                        next[day,month].d:=day;
                        next[day,month].m:=i;
                end;
                Prev(day,month);
        end;
        if (f[n,m] = lose) or (m*n=31*12) then write('LOSS')
        else write(next[n,m].d,' ',next[n,m].m);
end.

Download