QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#246180 | #2836. Permutation Pattern | nameless_story# | AC ✓ | 178ms | 60944kb | C++20 | 2.0kb | 2023-11-10 16:59:33 | 2023-11-10 16:59:35 |
Judging History
answer
#include"bits/stdc++.h"
using namespace std;
typedef long long ll;
template<class T1,class T2> bool cmin(T1 &x,const T2 &y) { if (y<x) { x=y; return 1; }return 0; }
template<class T1,class T2> bool cmax(T1 &x,const T2 &y) { if (x<y) { x=y; return 1; }return 0; }
#define all(x) (x).begin(),(x).end()
ll f[52][52][52][52],w[52];
mt19937 rnd(2354);
void solve(ll n)
{
vector<ll> a(n+1);
for (ll i=1; i<=n; ++i) cin>>a[i];
// iota(all(a),0);
// shuffle(1+all(a),rnd);
// int ta=0;
// for (int S=1; S<1<<n; S++)
// {
// vector<int> b;
// for (int i=0; i<n; i++) if (S>>i&1) b.push_back(a[i+1]);
// int m=b.size(),flg=1;
// for (int i=0; i<m&&flg; i++) for (int j=i+1; j<m&&flg; j++) for (int k=j+1; k<m&&flg; k++) if (b[j]>b[i]&&b[i]>b[k]) flg=0;
// ta+=flg;
// }
// for (int i=1; i<=n; i++) cerr<<a[i]<<" \n"[i==n];
// cerr<<ta<<endl;
for (int i=0; i<=n+1; i++) memset(f[i],0,sizeof f[0]);
for (ll len=1; len<=n; ++len)
{
for (ll l=1; l+len-1<=n; ++l)
{
ll r=l+len-1;
for (ll i=l; i<=r; ++i)
{
memset(w,0,sizeof w);
for (ll k=i+1; k<=r; ++k)
{
if (a[k]>a[i]) continue;
for (ll j=1; j<=a[k]; ++j)
{
w[j]+=f[i+1][r][k][j];
}
}
for (ll j=1; j<=n; ++j) ++w[j];
// if (l==3&&r==4&&i==3)
// {
// for (ll j=1; j<=n; ++j) cerr<<w[j]<<' ';
// cerr<<endl;
// }
for (ll j=1; j<=a[i]; ++j)
{
for (ll k=l; k<i; ++k)
{
if (a[k]<j) continue;
if (a[k]>a[i]) continue;
f[l][r][i][j]+=f[l][i-1][k][j]*w[a[k]+1];
}
f[l][r][i][j]+=w[j];
// cerr<<l<<' '<<r<<' '<<i<<' '<<j<<' '<<f[l][r][i][j]<<endl;
}
}
}
}
ll ans=0;
for (ll i=1; i<=n; ++i)
{
ans+=f[1][n][i][1];
// cerr<<f[1][n][i][1]<<endl;
}
// cerr<<": "<<f[3][4][3][2]<<endl;
// cerr<<": "<<f[3][4][4][2]<<endl;
cout<<ans<<'\n';
// assert(ans==ta);
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
ll n;
/*int T=10000;
while (T--)
{
solve(10);
}*/
while (cin>>n)
{
solve(n);
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 11048kb
input:
2 2 1 3 1 2 3 4 2 3 4 1
output:
3 7 11
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 11044kb
input:
1 1 2 1 2 2 2 1 3 1 2 3 3 1 3 2 3 2 1 3 3 2 3 1 3 3 1 2 3 3 2 1
output:
1 3 3 7 7 7 6 7 7
result:
ok 9 lines
Test #3:
score: 0
Accepted
time: 30ms
memory: 13092kb
input:
5 4 5 2 1 3 5 2 5 1 4 3 5 1 2 5 3 4 5 2 4 5 3 1 5 3 4 2 1 5 5 1 3 5 2 4 5 3 4 2 1 5 5 5 1 4 3 2 5 1 5 4 2 3 5 5 2 1 3 4 5 4 5 1 2 3 5 5 2 1 4 3 5 5 3 1 4 2 5 5 1 2 3 4 5 3 2 1 4 5 5 4 3 1 2 5 5 1 3 4 2 5 5 5 4 2 3 1 5 2 4 1 5 3 5 3 5 1 4 2 5 4 2 3 1 5 5 1 5 2 3 4 5 3 2 1 4 5 5 4 5 2 1 3 5 3 2 4 5 1 ...
output:
24 27 31 20 25 27 25 31 31 31 24 31 27 31 31 31 27 27 24 23 27 31 31 24 21 25 21 27 24 25 31 31 25 24 20 31 27 21 21 31 27 31 21 31 21 31 24 22 31 25 25 27 25 27 27 27 31 31 31 22 25 31 27 25 31 22 31 27 25 20 27 22 31 31 25 20 31 31 25 31 27 27 25 20 31 31 31 27 31 31 22 21 25 31 25 27 19 31 27 23
result:
ok 100 lines
Test #4:
score: 0
Accepted
time: 3ms
memory: 11976kb
input:
4 1 2 3 4 4 1 2 4 3 4 1 3 2 4 4 1 3 4 2 4 1 4 2 3 4 1 4 3 2 4 2 1 3 4 4 2 1 4 3 4 2 3 1 4 4 2 3 4 1 4 2 4 1 3 4 2 4 3 1 4 3 1 2 4 4 3 1 4 2 4 3 2 1 4 4 3 2 4 1 4 3 4 1 2 4 3 4 2 1 4 4 1 2 3 4 4 1 3 2 4 4 2 1 3 4 4 2 3 1 4 4 3 1 2 4 4 3 2 1
output:
15 15 15 13 15 15 15 15 13 11 13 12 15 13 15 12 12 12 15 15 15 13 15 15
result:
ok 24 lines
Test #5:
score: 0
Accepted
time: 29ms
memory: 11628kb
input:
5 1 2 3 4 5 5 1 2 3 5 4 5 1 2 4 3 5 5 1 2 4 5 3 5 1 2 5 3 4 5 1 2 5 4 3 5 1 3 2 4 5 5 1 3 2 5 4 5 1 3 4 2 5 5 1 3 4 5 2 5 1 3 5 2 4 5 1 3 5 4 2 5 1 4 2 3 5 5 1 4 2 5 3 5 1 4 3 2 5 5 1 4 3 5 2 5 1 4 5 2 3 5 1 4 5 3 2 5 1 5 2 3 4 5 1 5 2 4 3 5 1 5 3 2 4 5 1 5 3 4 2 5 1 5 4 2 3 5 1 5 4 3 2 5 2 1 3 4 5 ...
output:
31 31 31 27 31 31 31 31 27 23 27 25 31 27 31 25 25 25 31 31 31 27 31 31 31 31 31 27 31 31 27 27 23 20 23 21 27 24 25 21 21 20 27 27 25 22 25 24 31 31 27 23 27 25 31 31 25 21 25 22 25 21 25 20 19 19 25 23 25 21 22 22 31 27 31 25 25 25 31 27 27 22 23 21 31 25 31 24 22 22 24 24 24 21 24 24 31 31 31 27
result:
ok 100 lines
Test #6:
score: 0
Accepted
time: 7ms
memory: 11656kb
input:
5 5 1 4 2 3 5 5 1 4 3 2 5 5 2 1 3 4 5 5 2 1 4 3 5 5 2 3 1 4 5 5 2 3 4 1 5 5 2 4 1 3 5 5 2 4 3 1 5 5 3 1 2 4 5 5 3 1 4 2 5 5 3 2 1 4 5 5 3 2 4 1 5 5 3 4 1 2 5 5 3 4 2 1 5 5 4 1 2 3 5 5 4 1 3 2 5 5 4 2 1 3 5 5 4 2 3 1 5 5 4 3 1 2 5 5 4 3 2 1
output:
31 31 31 31 27 23 27 25 31 27 31 25 25 25 31 31 31 27 31 31
result:
ok 20 lines
Test #7:
score: 0
Accepted
time: 28ms
memory: 12836kb
input:
6 3 4 5 1 6 2 6 3 4 5 6 1 2 6 4 2 5 6 3 1 6 3 5 2 6 4 1 6 3 2 4 1 5 6 6 5 1 4 3 2 6 6 4 6 3 2 1 5 6 3 4 6 5 1 2 6 5 1 2 6 4 3 6 3 5 2 6 1 4 6 6 5 4 1 2 3 6 1 3 2 5 4 6 6 2 3 1 5 4 6 6 1 4 6 3 5 2 6 3 2 4 5 6 1 6 1 2 6 3 4 5 6 5 4 6 1 2 3 6 4 1 2 5 3 6 6 4 1 3 5 2 6 6 6 1 5 2 4 3 6 2 3 1 5 6 4 6 1 4 ...
output:
33 30 33 34 51 63 49 33 51 38 63 63 55 43 38 63 42 55 51 63 48 39 39 51 45 63 46 51 51 63 55 63 42 55 63 45 63 40 47 40 47 51 55 39 51 55 44 49 63 42 63 63 37 36 63 63 39 40 49 63 63 51 51 47 47 45 39 36 63 55 55 63 51 51 37 42 51 55 51 49 39 43 55
result:
ok 83 lines
Test #8:
score: 0
Accepted
time: 27ms
memory: 13952kb
input:
7 2 1 4 3 5 7 6 7 5 4 7 6 3 2 1 7 7 2 5 3 6 4 1 7 6 3 1 5 4 2 7 7 6 5 4 7 2 1 3 7 4 1 7 2 5 3 6 7 5 3 1 6 2 7 4 7 3 7 1 6 5 4 2 7 6 2 1 5 4 3 7 7 4 7 6 3 1 2 5 7 4 6 3 7 1 2 5 7 6 5 2 1 7 3 4 7 4 1 2 6 3 7 5 7 3 1 6 7 5 2 4 7 4 7 3 6 1 5 2 7 3 6 5 4 7 1 2 7 1 7 2 4 3 5 6 7 2 6 1 3 5 7 4 7 1 2 7 4 6 ...
output:
127 64 73 103 78 95 81 89 127 85 66 91 99 79 67 61 127 91 111 83 67 60 127 85 57 66 111 99 111 53 64 99 89 91 73 99 75 83 103 81 72 75 69 99 64 99 91 91 95 85 66 60 79 103 64 64 91 83 67 87 75 91 75 103 95 75 71 54 89 68 65
result:
ok 71 lines
Test #9:
score: 0
Accepted
time: 26ms
memory: 16224kb
input:
8 4 1 2 7 8 5 6 3 8 7 2 8 6 4 5 1 3 8 2 3 4 8 6 5 1 7 8 5 8 3 6 2 1 4 7 8 2 4 3 8 1 7 5 6 8 5 7 8 4 6 3 1 2 8 1 4 2 7 5 3 8 6 8 6 7 8 4 3 1 2 5 8 7 2 5 1 6 4 8 3 8 8 1 4 7 2 5 6 3 8 6 8 7 3 2 1 5 4 8 7 6 8 2 1 3 5 4 8 1 5 6 4 2 7 3 8 8 6 3 2 7 8 4 1 5 8 6 2 3 7 4 5 8 1 8 4 5 7 1 8 3 2 6 8 7 4 1 6 5 ...
output:
143 125 149 143 175 98 183 131 147 167 162 162 159 107 117 102 183 135 129 155 80 191 135 165 155 171 103 255 169 125 111 102 114 90 255 111 107 255 95 139 167 159 171 168 83 191 91 90 165 115 207 109 159 141 223 100 159 97 101 167 103 132
result:
ok 62 lines
Test #10:
score: 0
Accepted
time: 23ms
memory: 15820kb
input:
9 2 3 7 8 9 6 1 5 4 9 1 6 3 4 2 9 8 7 5 9 1 9 2 6 7 3 4 5 8 9 4 2 1 5 6 3 9 7 8 9 5 1 2 4 3 8 6 9 7 9 5 3 6 2 9 8 7 1 4 9 2 1 9 8 5 3 6 4 7 9 5 4 1 7 8 3 9 6 2 9 2 1 9 6 5 4 8 3 7 9 5 3 6 4 9 2 7 1 8 9 3 7 1 4 6 9 8 5 2 9 5 1 9 4 8 7 3 2 6 9 5 8 7 4 9 6 3 2 1 9 5 7 2 1 3 9 4 6 8 9 9 8 5 1 4 6 7 3 2 ...
output:
183 349 399 383 447 176 447 173 399 187 197 255 154 309 271 224 239 177 107 351 183 271 279 161 175 267 263 213 155 319 223 219 215 181 259 271 225 112 337 195 175 199 337 195 279 511 212 182 217 180 353 205 279 271 259
result:
ok 55 lines
Test #11:
score: 0
Accepted
time: 26ms
memory: 18688kb
input:
10 3 8 6 9 7 5 2 1 4 10 10 9 4 6 10 2 5 3 1 8 7 10 7 8 5 10 2 9 3 1 4 6 10 8 6 9 10 7 3 4 5 2 1 10 5 2 4 3 8 6 1 7 9 10 10 1 2 8 4 5 7 10 9 6 3 10 8 3 4 6 5 10 9 7 2 1 10 3 9 10 4 5 1 2 8 6 7 10 4 8 2 3 9 10 5 6 1 7 10 2 3 4 1 8 7 9 5 10 6 10 4 10 6 2 3 1 8 5 7 9 10 8 7 6 2 4 9 10 1 5 3 10 1 9 6 5 1...
output:
355 367 271 213 615 439 267 433 292 455 543 319 331 671 895 279 523 623 291 319 387 513 367 383 1023 424 283 583 341 407 355 291 575 373 316 297 412 603 565 431 575 306 341 267 367 421 300 383 735 511
result:
ok 50 lines
Test #12:
score: 0
Accepted
time: 12ms
memory: 18432kb
input:
2 2 1 8 3 8 1 6 2 7 4 5 2 2 1 3 2 1 3 6 3 4 6 5 1 2 1 1 4 2 4 3 1 1 1 6 1 3 4 2 6 5 9 5 8 9 2 1 3 7 4 6 2 1 2 9 4 3 7 9 1 2 5 6 8 6 4 6 1 5 3 2 4 3 1 4 2 6 2 1 3 6 4 5 2 1 2 2 1 2 7 4 7 2 3 5 1 6 2 2 1 1 1 7 2 7 6 5 1 4 3 2 2 1 4 3 1 2 4 8 7 8 2 6 5 1 4 3 9 4 5 1 2 6 3 7 9 8 10 1 3 2 9 5 7 8 10 6 4 ...
output:
3 158 3 7 33 1 12 1 55 249 3 247 43 13 63 3 3 73 3 1 99 3 15 156 335 495 53 15 135 7 3 318 7 1 27 135 1 287 138 205 1 103 895 15 15 27 175 75 73 175
result:
ok 50 lines
Test #13:
score: 0
Accepted
time: 178ms
memory: 60692kb
input:
50 3 50 12 35 11 7 17 49 1 9 41 5 4 27 6 22 8 20 44 43 10 13 15 42 38 16 18 19 30 2 23 21 34 24 32 25 45 39 40 48 26 28 37 36 33 31 29 47 46 14 50 41 21 40 37 36 31 30 3 2 1 34 27 8 4 5 9 28 17 10 11 7 12 15 38 13 14 6 18 20 25 24 16 22 29 26 35 32 33 46 45 50 42 47 48 49 23 43 39 44 19 50 41 38 23 ...
output:
71786596197 925094043175 15360313400319 83273752556543 599976015791 6320724096624 5783738400607 487480246255 307563605 419463685996543
result:
ok 10 lines
Test #14:
score: 0
Accepted
time: 178ms
memory: 60676kb
input:
50 34 20 49 44 4 16 7 24 26 46 31 12 22 47 17 21 29 14 23 9 11 2 30 33 18 8 19 13 38 15 39 28 48 27 35 3 40 42 37 6 25 32 43 10 45 1 50 41 5 36 50 2 29 24 7 1 3 8 4 12 5 6 10 9 26 11 23 13 44 14 16 41 37 15 19 20 34 33 32 21 45 40 22 17 28 25 27 18 30 31 35 38 36 39 43 42 50 46 49 47 48 50 28 19 18 ...
output:
469303887 3708187017215 320672525975551 2384027442511 7802888619 54571757666 12111593784831 124903382056959 22915448657023 181636580245503
result:
ok 10 lines
Test #15:
score: 0
Accepted
time: 176ms
memory: 60944kb
input:
50 1 2 3 16 5 4 6 12 10 9 8 7 11 14 13 15 42 41 40 21 17 19 18 20 26 25 22 24 23 28 27 39 29 36 32 31 30 33 35 34 38 37 43 45 44 50 46 47 48 49 50 24 30 13 12 44 9 8 6 26 1 5 3 10 11 23 15 14 16 18 17 21 19 22 37 25 33 27 2 32 31 28 29 40 36 20 34 50 47 41 4 38 42 43 46 45 48 39 35 7 49 50 45 44 25 ...
output:
1125899906842623 1973544596971 20464777601 145970369134591 1125899906842623 27103062537 492677980225535 611302507087 9436138365023 16901739359823
result:
ok 10 lines
Test #16:
score: 0
Accepted
time: 171ms
memory: 60684kb
input:
50 16 15 13 12 11 4 3 2 1 5 10 30 27 8 6 7 9 22 38 20 19 14 17 37 31 29 23 21 26 24 25 33 32 36 34 39 41 28 40 45 44 43 35 18 42 46 48 47 49 50 50 49 48 43 42 41 24 23 22 29 5 39 3 2 1 4 21 19 8 33 7 9 10 17 12 11 14 13 15 6 16 18 20 40 26 25 37 31 30 28 27 35 34 32 36 38 47 44 46 45 50 50 26 25 24 ...
output:
16941091848191 76454653671423 1125899906842623 281482263953919 1853535582743 11131049930979 914793674309631 109343881936895 323479068999679 226499395534975
result:
ok 10 lines
Test #17:
score: 0
Accepted
time: 168ms
memory: 60900kb
input:
50 48 47 46 45 44 30 35 24 3 16 12 10 4 2 1 9 8 7 6 15 13 14 31 28 27 18 19 20 17 11 25 21 26 5 23 43 29 34 32 33 37 38 36 39 40 22 42 41 49 50 50 50 13 47 44 43 49 42 34 32 31 30 28 27 26 25 14 9 8 7 5 24 3 1 4 12 6 10 2 16 15 11 21 20 18 17 19 22 23 29 33 35 37 36 39 38 40 41 46 45 48 50 46 43 25 ...
output:
13401186994175 58470124486783 3963515139491 18417882639247 1483926119947 74820097933311 76869894769151 138492980779 86510044435583 986103193471
result:
ok 10 lines
Test #18:
score: 0
Accepted
time: 165ms
memory: 60900kb
input:
50 50 49 48 47 45 42 41 40 39 38 18 17 16 1 15 14 5 4 2 3 7 6 8 13 11 10 9 12 32 27 26 25 24 19 20 23 21 22 28 29 31 30 37 33 36 35 34 43 44 46 50 3 1 2 5 4 11 6 33 43 19 8 21 18 17 9 13 10 34 12 15 16 20 31 29 22 24 25 26 28 7 30 42 41 32 35 38 27 37 36 40 39 44 45 23 46 49 48 47 14 50 50 46 45 44 ...
output:
1125899906842623 11503392639871 268613428707327 15555678637567 9233630159167 22814306219679 170131707658239 633318697600255 774159265169407 143738636705815
result:
ok 10 lines
Test #19:
score: 0
Accepted
time: 168ms
memory: 60648kb
input:
50 33 30 29 39 28 50 27 24 23 22 21 20 19 18 15 4 7 2 3 25 5 8 1 6 14 11 9 10 32 12 13 16 17 26 31 37 34 35 36 40 38 41 42 43 45 44 46 49 47 48 50 37 36 32 25 22 21 20 19 12 9 7 3 2 1 4 5 6 8 10 11 18 17 15 13 14 16 24 23 26 27 29 28 30 31 35 34 33 38 39 40 41 46 42 44 43 45 50 47 48 49 50 8 7 6 5 1...
output:
38933422040063 1125899906842623 562950014763007 44651459044351 26429508299007 22574688062335 50191439772447 48552580405247 976228746199 286807572873215
result:
ok 10 lines
Test #20:
score: 0
Accepted
time: 167ms
memory: 60648kb
input:
50 2 12 3 6 5 4 11 8 10 39 9 15 13 14 25 34 31 38 32 29 19 17 16 18 28 7 27 20 22 21 23 26 24 30 40 37 35 41 33 1 49 43 42 36 48 47 44 45 46 50 50 49 45 43 39 24 38 28 27 25 23 22 20 19 18 3 2 1 17 6 13 4 15 14 29 11 7 8 12 21 37 36 35 26 9 34 32 44 31 30 33 10 42 41 16 40 48 46 47 50 5 50 6 5 4 3 2...
output:
17351472343295 4556477881839 2463120461823 10732306780233 1125899906842623 1125899906842623 914793674309631 360661339078655 56122596884479 1125899906842623
result:
ok 10 lines
Test #21:
score: 0
Accepted
time: 169ms
memory: 60872kb
input:
50 13 11 10 7 12 6 5 2 1 3 4 9 8 14 15 16 18 17 20 19 26 22 21 25 24 23 27 28 29 30 32 31 35 34 33 36 40 39 37 38 41 42 44 43 46 45 47 48 49 50 50 33 5 4 3 2 1 31 27 10 9 6 8 7 25 24 12 15 13 14 23 22 20 19 16 18 17 21 26 29 28 30 32 34 43 37 39 35 36 38 42 40 11 41 44 46 45 47 48 50 49 50 12 9 4 2 ...
output:
636067476668415 457397606285311 562949953748991 193106020401151 156758753177599 562950161039359 1125899906842623 174067508416955 12327032671235 130364051111935
result:
ok 10 lines
Test #22:
score: 0
Accepted
time: 159ms
memory: 60872kb
input:
50 23 22 21 20 30 19 18 17 6 24 5 1 2 3 4 7 8 15 9 27 10 14 12 11 13 16 28 26 34 41 32 31 29 35 33 40 39 36 37 38 42 49 47 25 43 44 46 45 48 50 50 44 40 39 29 45 20 6 16 1 2 4 3 5 18 11 7 8 10 9 15 13 12 14 17 19 25 21 22 23 35 24 26 28 27 30 37 36 34 32 31 33 38 41 42 46 43 49 48 47 50 50 22 21 18 ...
output:
52374859921919 183793727635071 1125899906842623 164982120296479 291112892864703 84576527974399 149606796066815 1125899906842623 1125899906842623 26141702275847
result:
ok 10 lines
Test #23:
score: 0
Accepted
time: 172ms
memory: 60740kb
input:
50 19 27 40 18 49 41 4 42 23 44 13 12 6 14 20 17 28 35 43 21 15 29 34 2 38 48 10 9 32 31 22 11 3 50 36 45 8 25 30 37 1 5 24 16 26 7 33 39 46 47 50 12 26 47 33 38 49 1 20 39 17 42 18 37 6 30 19 22 23 5 31 45 41 9 16 34 10 7 35 46 50 2 24 11 40 4 32 27 13 48 14 36 3 43 44 8 25 28 21 29 15 50 22 32 36 ...
output:
247169890 56493847 155005117 61848536 421559517 201522429 133241515 63264935 97358485 652628926
result:
ok 10 lines
Test #24:
score: 0
Accepted
time: 11ms
memory: 60932kb
input:
50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
output:
1125899906842623
result:
ok single line: '1125899906842623'