結果
問題 |
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] }