結果
| 問題 |
No.1265 Balloon Survival
|
| コンテスト | |
| ユーザー |
semisagi
|
| 提出日時 | 2020-10-23 22:11:32 |
| 言語 | Swift (6.0.3) |
| 結果 |
AC
|
| 実行時間 | 98 ms / 2,000 ms |
| コード長 | 1,241 bytes |
| コンパイル時間 | 13,751 ms |
| コンパイル使用メモリ | 134,248 KB |
| 実行使用メモリ | 27,032 KB |
| 最終ジャッジ日時 | 2024-07-21 10:44:14 |
| 合計ジャッジ時間 | 16,012 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
struct Scanner {
private var elements = [String]()
private var index = 0
mutating func peek() -> String {
while elements.count == index {
elements = readLine()!.split(separator: " ").map(String.init)
index = 0
}
return elements[index]
}
mutating func next() -> String {
let value = peek()
index += 1
return value
}
mutating func nextInt() -> Int {
return Int(next())!
}
mutating func nextDouble() -> Double {
return Double(next())!
}
}
var scanner = Scanner()
let N = scanner.nextInt()
var P = [(x: Int, y: Int)]()
for _ in 0 ..< N {
let x = scanner.nextInt()
let y = scanner.nextInt()
P.append((x: x, y: y))
}
var events = [(t: Int, i: Int, j: Int)]()
for i in 0 ..< N {
for j in i + 1 ..< N {
let dx = P[j].x - P[i].x
let dy = P[j].y - P[i].y
events.append((t: dx * dx + dy * dy, i: i, j: j))
}
}
events.sort { $0.t < $1.t }
var alive = [Bool](repeating: true, count: N)
var answer = 0
for (_, i, j) in events where alive[i] && alive[j] {
if i == 0 {
answer += 1
} else {
alive[i] = false
}
alive[j] = false
}
print(answer)
semisagi