QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#260226 | #1191. Reordering the Documents | lemonilemon# | WA | 1ms | 3580kb | C++20 | 1.5kb | 2023-11-21 22:32:17 | 2023-11-21 22:32:18 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#ifdef genshin
#include <experimental/iterator>
#endif
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using uint = unsigned int;
const double EPS = 1e-8;
const int INF = 0x3F3F3F3F;
const ll LINF = 46 * ll(1e17);
const int MOD = 1e9 + 7;
const int maxn = 1e5 + 25;
int dp[5050], s[5050];
signed main() { ios::sync_with_stdio(0); cin.tie(0);
int n, m;
cin >> n >> m;
dp[0] = 1;
int l = 1, mn = n+1, mx = 0;
for (int i=1;i<=n;++i){
cin >> s[i];
mn = min(mn, s[i]);
mx = max(mx, s[i]);
if (mn == l && mx == i){
int fs = s[l], ss = -1, cnt = 1;
for (int j=l+1;j<=i;++j){
if (s[j] >= fs) ++fs, ++cnt;
else if (s[j] >= ss || ss == -1) ss = s[j];
else{
cout << "0\n";
return 0;
}
}
int tr1 = cnt, tr2 = i - l + 1 - cnt;
if (tr1 > tr2) swap(tr1, tr2);
for (int j=n;j>=tr2;--j){
dp[j] = (dp[j - tr1] + dp[j - tr2]) % MOD;
}
for (int j=tr2-1;j>=tr1;--j){
dp[j] = dp[j - tr1];
}
for (int j=tr1-1;j>=0;--j){
dp[j] = 0;
}
l = i+1;
mn = n+1;
mx = 0;
}
}
int ans = 0;
for (int i = n-m;i<=m;++i) ans = (ans + dp[i]) % MOD;
cout << ans << '\n';
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3568kb
input:
6 3 1 3 4 2 6 5
output:
4
result:
ok answer is '4'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3364kb
input:
6 6 1 3 4 2 6 5
output:
8
result:
ok answer is '8'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3516kb
input:
4 4 4 3 1 2
output:
0
result:
ok answer is '0'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3512kb
input:
6 3 1 3 4 2 6 5
output:
4
result:
ok answer is '4'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3512kb
input:
6 6 1 3 4 2 6 5
output:
8
result:
ok answer is '8'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
4 4 4 3 1 2
output:
0
result:
ok answer is '0'
Test #7:
score: -100
Wrong Answer
time: 1ms
memory: 3580kb
input:
1000 500 4 5 6 8 10 11 12 13 14 15 20 23 25 26 28 29 33 35 1 2 36 38 3 7 41 9 16 44 48 17 18 51 52 53 19 21 54 22 24 59 61 62 27 67 30 31 32 34 68 69 37 39 73 40 76 77 42 81 83 43 85 45 87 46 89 94 47 95 49 50 97 101 55 103 105 56 57 58 106 60 108 110 63 111 114 64 115 65 119 66 70 71 120 121 72 124...
output:
0
result:
wrong answer expected '11363968', found '0'