ログインしてください。
提出 #18011616
ソースコード 拡げる
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
const int N = 205;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
using namespace std;
int n, m, f[N], vis[N], p[N], c[N][N], fac[N], inv[N], ans;
char s[N];
template < typename T >
inline T read()
{
T x = 0, w = 1; char c = getchar();
while(c < '0' || c > '9') { if(c == '-') w = -1; c = getchar(); }
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * w;
}
int fpow(int x, int y)
{
int res = 1;
for( ; y; y >>= 1, x = 1ll * x * x % mod)
if(y & 1) res = 1ll * res * x % mod;
return res;
}
bool check(vector<int> res)
{
queue<int> q;
for(int i = 0; i <= m; i++) f[i] = vis[i] = p[i] = 0;
for(int pos = 0, i = 1; i <= m; i++)
{
if(s[i] == 'b')
{
if(q.size()) f[i] = res[q.front()] - 2, p[q.front()] = 1, vis[i] = 1, q.pop();
}
else
if(pos < res.size())
{
if(res[pos] > 1) q.push(pos);
else p[pos] = 1;
vis[i] = 1, pos++;
}
}
for(int i = 0; i < res.size(); i++) if(!p[i]) return 0;
for(int k = 0, i = m; i >= 1; i--)
if(vis[i])
{
if(f[i])
{
if(k < f[i]) return 0;
k -= f[i];
}
}
else k++;
return 1;
}
void dfs(int u, int l, int r, vector<int> res)
{
if(!u)
{
/* for(auto v : res) printf("%d ", v);
puts("");
*/ if(!check(res)) return;
/* for(auto v : res) printf("%d ", v);
puts("");
*/ int x = 1ll * c[n - l + r - 1][r - 1] * fac[res.size()] % mod, y = 0, z;
while(res.size())
{
y = 0, z = res[res.size() - 1];
while(res.size() && res[res.size() - 1] == z) y++, res.pop_back();
x = 1ll * x * inv[y] % mod;
}
ans = (ans + x) % mod;
return;
}
while(1)
{
dfs(u - 1, l, r, res);
r += 2 * u, l += (l != 0) + (u == 1 ? 1 : 2 * u - 3);
if(l > n) return;
res.push_back(u);
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("cpp.in", "r", stdin);
#endif
n = read <int> (), m = read <int> (), scanf("%s", s + 1);
for(int i = 0; i <= 200; i++)
for(int j = 0; j <= i; j++) c[i][j] = (!j ? 1 : (c[i - 1][j - 1] + c[i - 1][j]) % mod);
for(int i = (fac[0] = 1); i <= 200; i++) fac[i] = 1ll * fac[i - 1] * i % mod;
inv[200] = fpow(fac[200], mod - 2);
for(int i = 199; i >= 0; i--) inv[i] = 1ll * inv[i + 1] * (i + 1) % mod;
vector<int> res;
dfs((n + 3) >> 1, 0, 1, res), printf("%d\n", ans);
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - ColoringBalls |
| ユーザ | WhiteCmile |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 1100 |
| コード長 | 2465 Byte |
| 結果 | AC |
| 実行時間 | 203 ms |
| メモリ | 3972 KiB |
コンパイルエラー
./Main.cpp: In function ‘bool check(std::vector<int>)’:
./Main.cpp:43:11: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
43 | if(pos < res.size())
| ~~~~^~~~~~~~~~~~
./Main.cpp:50:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
50 | for(int i = 0; i < res.size(); i++) if(!p[i]) return 0;
| ~~^~~~~~~~~~~~
./Main.cpp: In function ‘int main()’:
./Main.cpp:97:45: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
97 | n = read <int> (), m = read <int> (), scanf("%s", s + 1);
| ~~~~~^~~~~~~~~~~~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1100 / 1100 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt |
| All | 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 1_026.txt, 1_027.txt, 1_028.txt, 1_029.txt, 1_030.txt, 1_031.txt, 1_032.txt, 1_033.txt, 1_034.txt, 1_035.txt, 1_036.txt, 1_037.txt, 1_038.txt, 1_039.txt, 1_040.txt, 1_041.txt, 1_042.txt, 1_043.txt, 1_044.txt, 1_045.txt, 1_046.txt, 1_047.txt, 1_048.txt, 1_049.txt, 1_050.txt, 1_051.txt, 1_052.txt, 1_053.txt, 1_054.txt, 1_055.txt, 1_056.txt, 1_057.txt, 1_058.txt, 1_059.txt, 1_060.txt, 1_061.txt, 1_062.txt, 1_063.txt, 1_064.txt, 1_065.txt, 1_066.txt, 1_067.txt, 1_068.txt, 1_069.txt, 1_070.txt, 1_071.txt, 1_072.txt, 1_073.txt, 1_074.txt, 1_075.txt, 1_076.txt, 1_077.txt, 1_078.txt, 1_079.txt, 1_080.txt, 1_081.txt, 1_082.txt, 1_083.txt, 1_084.txt, 1_085.txt, 1_086.txt, 1_087.txt, 1_088.txt, 1_089.txt, 1_090.txt, 1_091.txt, 1_092.txt, 1_093.txt, 1_094.txt, 1_095.txt, 1_096.txt, 1_097.txt, 1_098.txt, 1_099.txt, 1_100.txt, 1_101.txt, 1_102.txt, 1_103.txt, 1_104.txt, 1_105.txt, 1_106.txt, 1_107.txt, 1_108.txt, 1_109.txt, 1_110.txt, 1_111.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_000.txt | AC | 9 ms | 3916 KiB |
| 0_001.txt | AC | 2 ms | 3780 KiB |
| 0_002.txt | AC | 2 ms | 3920 KiB |
| 0_003.txt | AC | 193 ms | 3968 KiB |
| 1_004.txt | AC | 2 ms | 3844 KiB |
| 1_005.txt | AC | 6 ms | 3864 KiB |
| 1_006.txt | AC | 4 ms | 3808 KiB |
| 1_007.txt | AC | 2 ms | 3844 KiB |
| 1_008.txt | AC | 4 ms | 3864 KiB |
| 1_009.txt | AC | 3 ms | 3844 KiB |
| 1_010.txt | AC | 4 ms | 3900 KiB |
| 1_011.txt | AC | 2 ms | 3800 KiB |
| 1_012.txt | AC | 2 ms | 3916 KiB |
| 1_013.txt | AC | 2 ms | 3808 KiB |
| 1_014.txt | AC | 5 ms | 3964 KiB |
| 1_015.txt | AC | 2 ms | 3960 KiB |
| 1_016.txt | AC | 4 ms | 3840 KiB |
| 1_017.txt | AC | 2 ms | 3776 KiB |
| 1_018.txt | AC | 2 ms | 3916 KiB |
| 1_019.txt | AC | 3 ms | 3844 KiB |
| 1_020.txt | AC | 2 ms | 3776 KiB |
| 1_021.txt | AC | 3 ms | 3828 KiB |
| 1_022.txt | AC | 3 ms | 3848 KiB |
| 1_023.txt | AC | 3 ms | 3844 KiB |
| 1_024.txt | AC | 2 ms | 3960 KiB |
| 1_025.txt | AC | 2 ms | 3920 KiB |
| 1_026.txt | AC | 2 ms | 3852 KiB |
| 1_027.txt | AC | 2 ms | 3848 KiB |
| 1_028.txt | AC | 2 ms | 3900 KiB |
| 1_029.txt | AC | 3 ms | 3804 KiB |
| 1_030.txt | AC | 2 ms | 3804 KiB |
| 1_031.txt | AC | 6 ms | 3804 KiB |
| 1_032.txt | AC | 4 ms | 3864 KiB |
| 1_033.txt | AC | 3 ms | 3808 KiB |
| 1_034.txt | AC | 3 ms | 3864 KiB |
| 1_035.txt | AC | 3 ms | 3848 KiB |
| 1_036.txt | AC | 4 ms | 3920 KiB |
| 1_037.txt | AC | 3 ms | 3868 KiB |
| 1_038.txt | AC | 3 ms | 3920 KiB |
| 1_039.txt | AC | 3 ms | 3808 KiB |
| 1_040.txt | AC | 3 ms | 3852 KiB |
| 1_041.txt | AC | 5 ms | 3852 KiB |
| 1_042.txt | AC | 5 ms | 3848 KiB |
| 1_043.txt | AC | 6 ms | 3848 KiB |
| 1_044.txt | AC | 4 ms | 3908 KiB |
| 1_045.txt | AC | 5 ms | 3844 KiB |
| 1_046.txt | AC | 4 ms | 3852 KiB |
| 1_047.txt | AC | 6 ms | 3804 KiB |
| 1_048.txt | AC | 5 ms | 3940 KiB |
| 1_049.txt | AC | 4 ms | 3960 KiB |
| 1_050.txt | AC | 5 ms | 3916 KiB |
| 1_051.txt | AC | 4 ms | 3920 KiB |
| 1_052.txt | AC | 5 ms | 3920 KiB |
| 1_053.txt | AC | 6 ms | 3920 KiB |
| 1_054.txt | AC | 6 ms | 3784 KiB |
| 1_055.txt | AC | 5 ms | 3852 KiB |
| 1_056.txt | AC | 5 ms | 3784 KiB |
| 1_057.txt | AC | 4 ms | 3852 KiB |
| 1_058.txt | AC | 15 ms | 3856 KiB |
| 1_059.txt | AC | 11 ms | 3972 KiB |
| 1_060.txt | AC | 14 ms | 3968 KiB |
| 1_061.txt | AC | 18 ms | 3924 KiB |
| 1_062.txt | AC | 24 ms | 3872 KiB |
| 1_063.txt | AC | 12 ms | 3808 KiB |
| 1_064.txt | AC | 12 ms | 3924 KiB |
| 1_065.txt | AC | 14 ms | 3964 KiB |
| 1_066.txt | AC | 11 ms | 3856 KiB |
| 1_067.txt | AC | 20 ms | 3872 KiB |
| 1_068.txt | AC | 22 ms | 3792 KiB |
| 1_069.txt | AC | 16 ms | 3816 KiB |
| 1_070.txt | AC | 18 ms | 3856 KiB |
| 1_071.txt | AC | 20 ms | 3924 KiB |
| 1_072.txt | AC | 21 ms | 3780 KiB |
| 1_073.txt | AC | 22 ms | 3856 KiB |
| 1_074.txt | AC | 19 ms | 3856 KiB |
| 1_075.txt | AC | 16 ms | 3780 KiB |
| 1_076.txt | AC | 32 ms | 3784 KiB |
| 1_077.txt | AC | 33 ms | 3852 KiB |
| 1_078.txt | AC | 23 ms | 3924 KiB |
| 1_079.txt | AC | 27 ms | 3852 KiB |
| 1_080.txt | AC | 21 ms | 3868 KiB |
| 1_081.txt | AC | 29 ms | 3856 KiB |
| 1_082.txt | AC | 34 ms | 3852 KiB |
| 1_083.txt | AC | 28 ms | 3852 KiB |
| 1_084.txt | AC | 20 ms | 3792 KiB |
| 1_085.txt | AC | 50 ms | 3788 KiB |
| 1_086.txt | AC | 51 ms | 3860 KiB |
| 1_087.txt | AC | 52 ms | 3860 KiB |
| 1_088.txt | AC | 50 ms | 3924 KiB |
| 1_089.txt | AC | 52 ms | 3968 KiB |
| 1_090.txt | AC | 49 ms | 3860 KiB |
| 1_091.txt | AC | 52 ms | 3856 KiB |
| 1_092.txt | AC | 51 ms | 3812 KiB |
| 1_093.txt | AC | 47 ms | 3856 KiB |
| 1_094.txt | AC | 123 ms | 3928 KiB |
| 1_095.txt | AC | 111 ms | 3876 KiB |
| 1_096.txt | AC | 92 ms | 3928 KiB |
| 1_097.txt | AC | 87 ms | 3856 KiB |
| 1_098.txt | AC | 106 ms | 3792 KiB |
| 1_099.txt | AC | 117 ms | 3852 KiB |
| 1_100.txt | AC | 123 ms | 3852 KiB |
| 1_101.txt | AC | 112 ms | 3856 KiB |
| 1_102.txt | AC | 91 ms | 3816 KiB |
| 1_103.txt | AC | 190 ms | 3924 KiB |
| 1_104.txt | AC | 203 ms | 3856 KiB |
| 1_105.txt | AC | 126 ms | 3856 KiB |
| 1_106.txt | AC | 125 ms | 3792 KiB |
| 1_107.txt | AC | 169 ms | 3812 KiB |
| 1_108.txt | AC | 187 ms | 3872 KiB |
| 1_109.txt | AC | 190 ms | 3856 KiB |
| 1_110.txt | AC | 188 ms | 3856 KiB |
| 1_111.txt | AC | 122 ms | 3784 KiB |