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