結果
| 問題 |
No.8119 間に合いませんでした><;
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-02-05 21:37:29 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,838 bytes |
| コンパイル時間 | 19,033 ms |
| コンパイル使用メモリ | 376,140 KB |
| 実行使用メモリ | 10,496 KB |
| 最終ジャッジ日時 | 2025-02-05 21:39:00 |
| 合計ジャッジ時間 | 27,339 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 23 TLE * 6 |
ソースコード
#![cfg(target_os = "linux")]
use std::io::prelude::*;
fn output(s: &str) {
let stdout = std::io::stdout();
let mut token = s.split_ascii_whitespace();
let mut writer = std::io::BufWriter::new(stdout.lock());
unsafe {
let n = token.next().unwrap().parse::<usize>().unwrap();
let s = token.next().unwrap();
writeln!(&mut writer, "{}", solve(n, s)).unwrap();
}
}
fn main() {
unsafe {
use std::os::unix::io::FromRawFd;
match std::fs::File::from_raw_fd(0).metadata() {
Ok(metadata) if metadata.is_file() => {
let filelen = metadata.len();
let input = mmap(std::ptr::null_mut(), filelen as usize, 1, 2, 0, 0);
output(std::str::from_utf8_unchecked(std::slice::from_raw_parts(
input,
filelen as usize,
)));
}
_ => panic!(),
}
}
}
// unsafe: FFI
// (foreign function interface)
// Linux C Library (libc)
#[link(name = "c")]
extern "C" {
pub fn mmap(
addr: *mut u8,
length: usize,
prot: i32,
flags: i32,
fd: i32,
off: isize,
) -> *mut u8;
}
const MOD: u64=998244353;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[target_feature(enable = "avx2")]
unsafe fn solve(n: usize, s: &str) -> u64 {
if n%10>0 {
return 0;
}
let mut dp=[u64::default(); 14_001];
dp[0]=1;
for i in 0..n/10 {
for k in 1..=n/10-i {
let mut ok=true;
ok&=s.chars().nth(i*10+2*k).unwrap()!='x';
ok&=s.chars().nth(i*10+5*k).unwrap()!='x';
ok&=s.chars().nth(i*10+10*k).unwrap()!='x';
if ok {
dp[i+k]+=dp[i];
dp[i+k]%=MOD;
}
}
}
dp[n/10]
}