#import algorithm, future, macros, math, sequtils, sets, strutils, tables import algorithm, sugar, macros, math, sequtils, sets, strutils, tables macro unpack(rhs: seq, cnt: static[int]): auto = let v = genSym(); result = quote do:(let `v` = `rhs`;()) if NimMinor <= 17: for i in 0..>=`(n: var int, m: int) = n = n shr m proc `?=`(n: var SomeNumber, m: SomeNumber) = n = max(n, m) proc newSeq2[T](n1, n2: Natural): seq[seq[T]] = newSeqWith(n1, newSeq[T](n2)) proc newSeq3[T](n1, n2, n3: Natural): seq[seq[seq[T]]] = newSeqWith(n1, newSeqWith(n2, newSeq[T](n3))) # -------------------------------------------------- # var N = input(int) var S = "#" & input(string) & "#" var used = newseq[bool](N + 1) var res = 0 var cnt1 = 0 var idx1 = newseq[int]() var idx = 0 for i in 1 .. N: case S[i]: of '3', '5', '7': res += 1 used[i] = true of '1': cnt1 += 1 idx1.add(i) of '9': if cnt1 >= 1: used[idx1[idx]] = true used[i] = true cnt1 -= 1 idx += 1 res += 1 else: discard var cnt9 = 0 for i in 1 .. N: if used[i]: continue case S[i]: of '9': cnt9 += 1 of '1': if cnt9 >= 2: used[i] = true cnt9 -= 2 res += 1 else: discard cnt1 = 0 for i in 1 .. N: if S[i] == '1' and not used[i]: cnt1 += 1 res += cnt1 div 2 echo res