結果
問題 | No.2515 Similar Triangles |
ユーザー | yassu0320 |
提出日時 | 2023-11-08 19:16:36 |
言語 | Nim (2.0.2) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 4,804 bytes |
コンパイル時間 | 4,474 ms |
コンパイル使用メモリ | 73,132 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-25 23:52:07 |
合計ジャッジ時間 | 3,660 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 1 ms
5,376 KB |
testcase_06 | AC | 1 ms
5,376 KB |
testcase_07 | AC | 1 ms
5,376 KB |
testcase_08 | AC | 1 ms
5,376 KB |
testcase_09 | AC | 1 ms
5,376 KB |
ソースコード
import algorithm import deques import options import sequtils import sets import std/heapqueue import std/math import std/tables import strformat import strutils #{.checks: off.} {.warning[UnusedImport]: off.} {.hint[XDeclaredButNotUsed]: off.} const letter: string = "abcdefghijklmnopqrstuvwxyz" const Letter: string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" const MAX_INT: int = high(int) const MIN_INT: int = low(int) const MOD998244353 = 998_244_353 const MOD1000000007 = 1_000_000_007 const DXDY4: seq[tuple[x, y: int]] = @[(0, 1), (1, 0), (0, -1), (-1, 0)] const DXDY8: seq[tuple[x, y: int]] = @[(0, 1), (1, 0), (0, -1), (-1, 0), (1, 1), (1, -1), (-1, -1), (-1, 1)] proc scanf(formatstr: cstring){.header: "<stdio.h>", varargs.} proc getchar(): char {.header: "<stdio.h>", varargs.} proc nextInt(): int = scanf("%lld", addr result) proc nextInts(n: int): seq[int] = var res = newSeq[int](n) for i in 0..<n: res[i] = nextInt() return res proc nextInts(h, w: int): seq[seq[int]] = result = newSeqWith(h, newSeq[int](w)) for y in 0..<h: for x in 0..<w: result[y][x] = nextInt() proc nextInt64(): int64 = scanf("%lld", addr result) proc nextUInt64(): uint64 = scanf("%lld", addr result) proc nextFloat(): float = scanf("%lf", addr result) proc nextFloats(n: int): seq[float] = var res = newSeq[float](n) for i in 0..<n: res[i] = nextFloat() return res proc nextChar(): char = while true: var c = getchar() if int(c) > int(' '): return c proc nextString(): string = var get = false result = "" while true: var c = getchar() if int(c) > int(' '): get = true result.add(c) else: if get: break get = false proc nextStrings(n: int): seq[string] = for _ in 0..<n: result.add(nextString()) iterator range(start, stop, step: int): int = # instead of countup or countdown assert step != 0 if step > 0: var i = start while i <= stop: yield i i+=step else: var i = start while i >= stop: yield i i+=step func `+`(a, b: bool): bool = a or b func `*`(a, b: bool): bool = a and b func `+`(a: var bool, b: bool): bool = a = a or b func `*`(a: var bool, b: bool): bool = a = a and b func `|`(a, b: bool): bool = a or b proc `|=`(a: var bool, b: bool) = a = a or b func `|`(c1, c2: int): int = c1 or c2 func `&`(a, b: bool): bool = a and b proc `&=`(a: var bool, b: bool) = a = a and b func `&`(c1, c2: int): int = c1 and c2 func `//`(a, b: int): int = a div b proc `//=`(a: var int, b: int) = a = a div b func `%`(a: int, b: Positive): int = result = a mod b if result < 0: result += b proc `%=`(a: var int, b: int) = a = a mod b func `<<`(a: int, s: int): int = a shl s func `>>`(a: int, s: int): int = a shr s proc `>>=`(a: var int, b: int) = a = a shr b proc `[]`(n, i: Natural): int = (n >> i) & 1 func ceil[T: SomeInteger](b, a: T): T = (a+b-1) div a func all(a: openArray[bool]): bool = result = true for x in a: result &= x func any(a: openArray[bool]): bool = result = false for x in a: result |= x # Z/mo Z上のaの逆元 func inv(a, mo: int): int = var r = (mo, a) var x = (0, 1) while r[1] != 0: x = (x[1], (x[0] - (r[0] div r[1]) * x[1]) % mo) r = (r[1], r[0] % r[1]) if r[0] == 1: return x[0] else: return -1 func bitLength(n: Natural): int = result = 0 var num = abs(n) while num > 0: result += 1 num = num shr 1 proc chmax[T](a: var T, vars: varargs[T]): bool {.discardable.} = let target = max(vars) if a < target: a = target return true else: return false proc chmin[T](a: var T, vars: varargs[T]): bool {.discardable.} = let target = min(vars) if a > target: a = target return true else: return false template present(a: typed): bool = a.len != 0 template empty(a: typed): bool = a.len == 0 template rep(idx: untyped, n: SomeOrdinal, act: untyped): untyped = for idx in 0 ..< n: act template loop(body: untyped): untyped = while true: body func Yn(cond: bool, yes: string = "Yes", no: string = "No"): string = if cond: yes else: no func `<`[T](u, v: openArray[T]): bool = assert u.len == v.len for j in 0..<u.len: if u[j] != v[j]: return u[j]-v[j] < 0 return true template pass() = discard template pass(x: typed) = discard x template cont() = continue template ret() = return # start coding let X1 = nextInt() Y1 = nextInt() X2 = nextInt() Y2 = nextInt() echo Yn(Y1 == Y2)