Created
April 20, 2019 17:21
-
-
Save loloicci/f9d321c126bf60029e392cb2731b40b1 to your computer and use it in GitHub Desktop.
ABC 2019/04/20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import strutils, sequtils | |
let | |
abc = stdin.readline.split({' '}).map(parseInt) | |
a = abc[0] | |
b = abc[1] | |
c = abc[2] | |
if (a < c and c < b) or (b < c and c < a): | |
echo "Yes" | |
else: | |
echo "No" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import strutils, sequtils | |
let | |
n = stdin.readline.parseInt | |
s = stdin.readline | |
k = stdin.readline.parseInt | |
sk = s[k - 1] | |
var | |
ans = "" | |
for c in s: | |
if sk == c: | |
ans = ans & c | |
else: | |
ans = ans & "*" | |
echo ans |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import strutils, sequtils | |
let | |
n = stdin.readline.parseInt | |
s = stdin.readline | |
var | |
sp = 0 | |
dt = 0 | |
rds = 0 | |
rdd = 0 | |
for c in s: | |
if c == '.': | |
inc(dt) | |
else: | |
inc(sp) | |
var mn = dt | |
for c in s: | |
if c == '.': | |
inc(rdd) | |
else: | |
inc(rds) | |
let nw = dt - rdd + rds | |
if mn > nw: | |
mn = nw | |
echo mn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import strutils, sequtils, math, tables | |
proc powMod(n, m, by: int): int = | |
if m == 0: | |
return 1 | |
else: | |
return (n * powMod(n, (m - 1), by)) mod by | |
let n = stdin.readline.parseInt | |
var | |
dp, dpn: Table[int, Table[int, int]] | |
sm = 0 | |
sa: seq[int] = @[] | |
ret = 3.powMod(n, 998244353) | |
#echo ret | |
dp = initTable[int, Table[int, int]]() | |
dpn = initTable[int, Table[int, int]]() | |
dp[0] = initTable[int, int]() | |
dpn[0] = initTable[int, int]() | |
dp[0][0] = 1 | |
dpn[0][0] = 1 | |
for i in 1..n: | |
let a = stdin.readline.parseInt | |
sa.add(a) | |
sm = sm + a | |
dp[i] = initTable[int, int]() | |
dpn[i] = initTable[int, int]() | |
for k in dp[i - 1].keys: | |
# for all | |
dp[i][k] = (dp[i - 1][k] * 2 + (if dp[i].hasKey(k): dp[i][k] else: 0)) mod 998244353 | |
dp[i][k + a] = (dp[i - 1][k] + (if dp[i].hasKey(k + a): dp[i][k + a] else: 0)) mod 998244353 | |
#echo "----" | |
#echo ret | |
#echo sm | |
#echo dp[n] | |
#echo dpn[n] | |
for k in dp[n].keys: | |
if k * 2 >= sm: | |
ret = (((ret - dp[n][k] * 3) mod 998244353) + 998244353) mod 998244353 | |
if k * 2 == sm: | |
for i in 1..n: | |
for ik in dpn[i - 1].keys: | |
if ik * 2 > sm: | |
continue | |
let a = sa[i - 1] | |
# for not | |
dpn[i][ik] = (dpn[i - 1][ik] + (if dpn[i].hasKey(ik): dpn[i][ik] else: 0)) mod 998244353 | |
dpn[i][ik + a] = (dpn[i - 1][ik] + (if dpn[i].hasKey(ik + a): dpn[i][ik + a] else: 0)) mod 998244353 | |
ret = (ret + dpn[n][k] * 3) mod 998244353 | |
echo ret |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment