3298 Antimonotonicity
ちょっと早いですが今週のPKUです。
import java.util.*; public class Main{ static{ Scanner s=new Scanner(System.in); s.next(); for(int n,x,y,c;(n=s.nextInt())>0;System.out.println(c)) for(x=c=1;n-->0;x=y) c=c%2!=1^x>(y=s.nextInt())?c+1:c; } }
簡単な処理だったので、Haskellの練習もかねて...後で追記。
追記。odzさんの指摘を適用すると、1バイト減りますね。やっふぉーい。
for文の終了条件が怪しいというのは、たぶん(n=s.nextInt())>0のことだと思いますが、怪しいというか、例外(NoSuchElementException)がでます。
でもこの問題は、最後に例外を投げてもPKU的にはAcceptされる問題なのでOKです。
追記2.
練習としてHaskellでも書いてみた.PKUには提出できません.基本的にはアルゴリズムは同じ.
main :: IO () main = do s <- getContents putStr . unlines . map show . map problem . drop 1 $ lines s problem :: String -> Int problem s = maxMary 0 1 . map read . drop 1 $ words s maxMary :: Int -> Int -> [Int] -> Int maxMary t c [] = c maxMary t c (x:xs) = if ((mod c 2) == 0) /= (t > x) then maxMary x (c + 1) xs else maxMary x c xs