\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{2. feladatsor, 32. feladat}
\begin{document}
\noindent
\emph{Feladat:} Keressük meg az $[a,b]$ intervallumon értelmezett $f$
függvény olyan értékeinek a maximumát, ahol az argumentum és a hozzá
tartozó érték paritása azonos!

Vegyük észre hogy az, hogy az argumentum és a függvényérték egyszerre
páros vagy páratlan, nagyon tömören összefoglalható: $2\mid i+f(i)$.

\emph{Specifikáció:}\\
$A = \alatt{\Z}{a} \times \alatt{\Z}{b} \times \alatt{\Z}{max} \times \alatt{\L}{l}$\\
$B = \alatt{\Z}{a'} \times \alatt{\Z}{b'}$\\
$Q = ( a=a' \es b=b' \es a\le b+1)$\\
$R = ( Q \es l=(\exists i\in[a..b]:2\mid i+f(i)) \es l\nyil(\exists i\in[a..b]: 2\mid i+f(i) \es 
max=f(i) \es \forall j\in[a..b]:(2\mid j+f(j))\nyil(f(j)\le max)))$

A specifikáció nagyon hasonló a feltételes maximumkeresés programozási tételéhez.
Az eltéréseket az alábbi táblázattal foglalhatjuk össze:

\begin{tabular}{cccl}
feladat &  & feltételes maximumkeresés & \\
\hline
$a$ & \knyil & $m$ & \\
$b$ & \knyil & $n$ & \\
$-$ & \knyil & $i$ & (alteres általánosított visszavezetés) \\
$2|i+f(i)$ & \knyil & $\beta(i)$ &
\end{tabular}

\begin{stuki}[17cm]
  \stm{k,l:=a-1,\hamis}
  \begin{WHILE}{4}{\stm{k \ne b}}
    \begin{CASE}{2}{9}
      \WHEN[2]{\stm{2 \not | (k+1+f(k+1))}}
      \SKIP
      \WHEN[3]{\stm{2|(k+1+f(k+1))\es\nem l}}
      \stm{l,i,max:=\igaz,k+1,f(k+1)}
      \WHEN[4]{\stm{2|(k+1+f(k+1)) \es l}}
      \begin{CASE}{1}{2}
        \WHEN{\stm{f(k+1)\ge max}}
        \stm{i,max:=k+1,f(k+1)}
        \WHEN{\stm{f(k+1)\le max}}
        \SKIP
      \end{CASE}
    \end{CASE}
    \stm{k:=k+1}
  \end{WHILE}
\end{stuki}

\end{document}
