結果

問題 No.1996 <><
コンテスト
ユーザー MasKoaTS
提出日時 2022-05-26 12:56:21
言語 C(gnu17)
(gcc 15.2.0)
コンパイル:
gcc-15 -O2 -std=gnu17 -Wno-error=implicit-function-declaration -Wno-error=implicit-int -DONLINE_JUDGE -o a.out _filename_ -lm
実行:
./a.out
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 909 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 207 ms
コンパイル使用メモリ 42,128 KB
最終ジャッジ日時 2026-02-22 09:08:44
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 22 TLE * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

//愚直解(爆速)

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

#include <stdio.h>
#define u32 unsigned int
#define mod 1000000007
#define MAX_DATA 1500

int main(void) {
	int i, j, k;
	int N, K;	scanf("%d", &N);	scanf("%d", &K);
	int a[MAX_DATA] = { 0 };
	for (i = 0; i < N; ++i) {
		scanf("%d", a + i);
	}
	char s[MAX_DATA];
	scanf("%s", s);

	u32 dp[MAX_DATA] = { 0 };
	u32 ndp[MAX_DATA] = { 0 };
	for (i = 0; i < N; ++i) {
		dp[i] = 1;
	}
	for (i = 0; i < K; ++i) {
		int t = ((s[i] == '<') << 1) - 1;
		for (j = 0; j < N; ++j) {
			ndp[j] = 0;
			for (k = 0; k < j; ++k) {
				ndp[j] += (u32)((a[k] - a[j]) * t < 0) * dp[k];
				ndp[j] -= (ndp[j] >= mod) * mod;
			}
		}
		for (j = 0; j < N; ++j) {
			dp[j] = ndp[j];
		}
	}

	u32 ans = 0;
	for (i = 0; i < N; ++i) {
		ans += dp[i];
		ans -= (ans >= mod) * mod;
	}
	printf("%u\n", ans);

	return 0;
}
0