diff options
author | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2020-06-06 21:33:13 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2020-06-06 21:33:13 +0700 |
commit | 2f674dc80f0382f1c3178f435714960734dc9d3c (patch) | |
tree | 2abba7e4ec72bd16f58f7375126144d3fd9f4bca /12/TP-HN-2009/R1/BTN.PAS | |
parent | b2d80610db6beda38573890ed169815e495bc663 (diff) | |
download | cp-2f674dc80f0382f1c3178f435714960734dc9d3c.tar.gz |
Reorganize stuff from secondary school
Diffstat (limited to '12/TP-HN-2009/R1/BTN.PAS')
-rw-r--r-- | 12/TP-HN-2009/R1/BTN.PAS | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/12/TP-HN-2009/R1/BTN.PAS b/12/TP-HN-2009/R1/BTN.PAS deleted file mode 100644 index dbb022d..0000000 --- a/12/TP-HN-2009/R1/BTN.PAS +++ /dev/null @@ -1,87 +0,0 @@ -type sni = record - s : ansistring; - n : integer -end; - -var - f : text; - s : ansistring; - op, cl : integer; - c : char; - -function cal(s : ansistring) : integer; - var - c : char; - tmp : integer = 0; - begin - cal := 0; - for c in s do - if c = '(' then - begin - inc(tmp); - if tmp > cal then - cal := tmp - end - else - begin - dec(tmp); - if tmp < 0 then exit(0) - end; - if tmp <> 0 then - exit(0) - end; - -function rplc( - s : ansistring; - c : char; - idx : integer -) : ansistring; - begin - exit(copy(s, 1, idx - 1) + c + copy(s, idx + 1, length(s) - idx + 1)) - end; - -function libtn( - s : ansistring; - op, cl, idx : integer -) : sni; - var - i : integer; - v0, v1 : sni; - begin - if (op = 0) and (cl = 0) then - begin - libtn.s := s; - libtn.n := cal(s); - exit - end; - i := idx; - while s[i] <> '?' do - inc(i); - if op = 0 then - exit(libtn(rplc(s, ')', i), 0, cl - 1, i + 1)); - if cl = 0 then - exit(libtn(rplc(s, '(', i), op - 1, 0, i + 1)); - v0 := libtn(rplc(s, '(', i), op - 1, cl, i + 1); - v1 := libtn(rplc(s, ')', i), op, cl - 1, i + 1); - if v0.n > v1.n then - exit(v0) - else exit(v1) - end; - -begin - assign(f, 'BTN.INP'); - reset(f); - read(f, s); - close(f); - op := length(s) div 2; - cl := length(s) div 2; - for c in s do - if c = '(' then - dec(op) - else if c = ')' then - dec(cl); - assign(f, 'BTN.OUT'); - rewrite(f); - writeln(f, libtn(s, op, cl, 1).s); - close(f) -end. |