Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
program haromszog;
uses math;
const maxN = 100;
type TTomb = array[1..maxN,1..maxN*2-1] of boolean;
var t: TTomb;
N:byte;
procedure loadtri;
var i,j:byte;
ch:char;
begin
readln(N);
for i:=1 to N do
for j:=1 to 2*N-1 do
t[i,j]:=false;
for i:=N downto 1 do
begin
for j:=1 to n+i-1 do
begin
read(ch);
if ch='-' then t[i,j]:=true;
end;
readln;
end;
end;
procedure dump;
var i,j:byte;
begin
for i:=1 to N do
begin
for j:=1 to 2*N-1 do
if t[i,j] then write('X') else write('.');
writeln;
end;
end;
function test1(a,b:byte;k:byte):boolean;
var r:boolean;
i,j:byte;
begin
r:=true;
for i:=a to a+k-1 do
for j:=a+b-i to b-a+i do
if not(t[i,j]) then r:=false;
test1:=r;
end;
function proba1(k:byte):boolean;
var r:boolean;
a,b:byte;
begin
r:=false;
for a:=1 to N-K+1 do
for b:=n+1-a to n-1+a do
if (a+b) mod 2 = (n+1) mod 2 then
if test1(a,b,k) then r:=true;
proba1:=r;
end;
function test2(a,b:byte;k:byte):boolean;
var r:boolean;
i,j:byte;
begin
r:=true;
for i:=a downto a-k+1 do
for j:=b-(a-i) to b+a-i do
if not(t[i,j]) then r:=false;
test2:=r;
end;
function proba2(k:byte):boolean;
var r:boolean;
a,b:byte;
begin
r:=false;
for a:=k to N do
for b:=k to (2*n-1)-k+1 do
if (a+b) mod 2 = (n) mod 2 then
if test2(a,b,k) then r:=true;
proba2:=r;
end;
function max1:integer;
var x:integer;
k:byte;
begin
x:=0;
for k:=N downto 1 do
begin
if proba1(k) then
begin
x:=k;
break;
end;
end;
max1:=x*x;
end;
function max2:integer;
var x:integer;
k:byte;
begin
x:=0;
for k:=N downto 1 do
begin
if proba2(k) then
begin
x:=k;
break;
end;
end;
max2:=x*x;
end;
begin
repeat
loadtri;
if n<>0 then
begin
writeln(max(max1,max2));
end;
until n=0;
end.