結果
| 問題 |
No.5018 Let's Make a Best-seller Book
|
| コンテスト | |
| ユーザー |
naut3
|
| 提出日時 | 2023-10-01 14:26:43 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,474 bytes |
| コンパイル時間 | 1,216 ms |
| コンパイル使用メモリ | 153,204 KB |
| 実行使用メモリ | 4,380 KB |
| スコア | 0 |
| 最終ジャッジ日時 | 2023-10-01 14:26:48 |
| 合計ジャッジ時間 | 4,635 ms |
|
ジャッジサーバーID (参考情報) |
judge12 / judge11 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | TLE * 1 -- * 99 |
コンパイルメッセージ
warning: value assigned to `M` is never read --> Main.rs:17:13 | 17 | let mut M = input!(usize); | ^ | = help: maybe it is overwritten before being read? = note: `#[warn(unused_assignments)]` on by default warning: variable `S` is assigned to, but never used --> Main.rs:19:13 | 19 | let mut S = vec![]; | ^ | = note: consider using `_S` instead = note: `#[warn(unused_variables)]` on by default warning: value assigned to `P` is never read --> Main.rs:20:13 | 20 | let mut P = vec![]; | ^ | = help: maybe it is overwritten before being read? warning: variable `R` is assigned to, but never used --> Main.rs:21:13 | 21 | let mut R = vec![]; | ^ | = note: consider using `_R` instead warning: value assigned to `S` is never read --> Main.rs:41:9 | 41 | S = input!(usize, N); | ^ | = help: maybe it is overwritten before being read? warning: value assigned to `R` is never read --> Main.rs:43:9 | 43 | R = input!(usize, N); | ^ | = help: maybe it is overwritten before being read? warning: value assigned to `S` is never read --> Main.rs:86:13 | 86 | S = input!(usize, N); | ^ | = help: maybe it is overwritten before being read? warning: value assigned to `R` is never read --> Main.rs:88:13 | 88 | R = input!(usize, N); | ^ | = help: maybe it is overwritten before being read? warning: 8 warnings emitted
ソースコード
#![allow(unused_must_use, non_snake_case)]
use std::io::{stdin, stdout, BufWriter, Write};
fn main() {
let mut scan = Scanner::default();
macro_rules! input {
($T: ty) => {
scan.next::<$T>()
};
($T: ty, $N: expr) => {
(0..$N).map(|_| scan.next::<$T>()).collect::<Vec<_>>()
};
}
let T = input!(usize);
let N = input!(usize);
let mut M = input!(usize);
let mut S = vec![];
let mut P = vec![];
let mut R = vec![];
// g >= 3 を最初にやったら M = 0 になる :(
let g = 2;
{
let out = &mut BufWriter::new(stdout());
writeln!(out, "2 {}", g);
}
{
M = {
let r = input!(isize);
assert!(r != -1);
r as usize
};
S = input!(usize, N);
P = input!(isize, N);
R = input!(usize, N);
}
for _ in 1..T {
let C = M / 500;
let C_half = C / 2;
// output
{
let out = &mut BufWriter::new(stdout());
let sum_of_weight = P.iter().map(|&p| if p >= 0 { p } else { 0 }).sum::<isize>();
// assert!(sum_of_weight > 0);
let L = (0..N)
.map(|i| {
C_half / N
+ C_half * (if P[i] > 0 { P[i] } else { 0 }) as usize
/ sum_of_weight as usize
})
.collect::<Vec<_>>();
writeln!(
out,
"1 {}",
L.iter()
.map(|x| x.to_string())
.collect::<Vec<_>>()
.join(" ")
);
}
// input
{
M = {
let r = input!(isize);
assert!(r != -1);
r as usize
};
S = input!(usize, N);
P = input!(isize, N);
R = input!(usize, N);
}
}
}
#[derive(Default)]
struct Scanner {
buffer: Vec<String>,
}
impl Scanner {
fn next<T: std::str::FromStr>(&mut self) -> T {
loop {
if let Some(token) = self.buffer.pop() {
return token.parse().ok().expect("Failed parse");
}
let mut input = String::new();
stdin().read_line(&mut input).expect("Failed read");
self.buffer = input.split_whitespace().rev().map(String::from).collect();
}
}
}
naut3