fork download
  1. program solitario;
  2. var N,M,app, soluzione:longint;
  3. griglia:array[0..10,0..10] of longint;
  4.  
  5. function gioca(r, c: longint): boolean;
  6. begin
  7. (*tris orizzontale*)
  8. if (c-2>=0) and (griglia[r][c-2]=1) and (griglia[r][c-1]=1) then gioca:=false
  9. (*tris verticale*)
  10. else if (r-2>=0) and (griglia[r-2][c]=1) and (griglia[r-1][c]=1) then gioca:=false
  11. (* Tris diagonale in alto a sx*)
  12. else if (r-2>=0 ) and (c-2>=0) and (griglia[r-2][c-2]=1) and (griglia[r-1][c-1]=1) then gioca:=false
  13. (* Tris diagonale in alto a dx*)
  14. else if (r-2>=0) and (c+2<=M) and (griglia[r-2][c+2]=1) and (griglia[r-1][c+1]=1) then gioca:=false
  15. else gioca := true;
  16. end;
  17. Procedure riempi (riga:longint; colonna:longint; tot:longint);
  18. begin
  19. if colonna=M then begin riga:=riga+1; colonna:=0; end;
  20. if riga=N then begin if tot>soluzione then soluzione:=tot; exit end;
  21. (*Se posso, metto la X*)
  22. if gioca (riga,colonna)=true then
  23. begin
  24. griglia[riga][colonna]:=1;
  25. Riempi(riga,colonna+1, tot+1);
  26. (* Reset della griglia[riga][col]*)
  27. griglia[riga][colonna]:=0;
  28. end;
  29. (* Non metto la X*)
  30. Riempi(riga,colonna+1, tot);
  31.  
  32. end;
  33. begin
  34. readln(N,M);
  35. if N*M>30 then soluzione:=N*M*11 div 20 +1
  36. else begin soluzione:=0; riempi(0,0,0); end;
  37. writeln(soluzione);
  38. end.
  39.  
Success #stdin #stdout 0s 5288KB
stdin
6 6
stdout
20