QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#406036 | #8627. 归程 | dingdingtang11514 | 65 | 1672ms | 338036kb | C++14 | 5.6kb | 2024-05-06 19:08:51 | 2024-05-06 19:08:53 |
Judging History
answer
#include <iostream>
#include <cstring>
#include <map>
#include <vector>
#include <queue>
#include <cmath>
#include <algorithm>
#include <set>
// #include <bits/stdc++.h>
// #define int long long
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rof(i,a,b) for(int i=(a);i>=(b);i--)
#define Grf(it,u,to) for(int it=he[u],to;(to=e[it],it);it=nxt[it])
#define In __inline
#define OP operator
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
namespace Mine {
// mt19937_64 wql(514);
In int read() {
ll x=1,a=0;
char ch=getchar();
while(ch>'9' || ch<'0') x=(ch=='-')?-1:x,ch=getchar();
while(ch>='0' && ch<='9') a=(a<<1)+(a<<3)+(ch-'0'),ch=getchar();
return a*x;
} const int N=1005,M=8005,T=20005;
double f[T][N],p[T];
int n,m,K,st,ed;
int he[N],e[M],l[M],a[M],b[M],idx=1,W[N],t[N],nxt[M];
void adde(int x,int y,int d,int aa,int bb) {
e[++idx]=y,l[idx]=d;a[idx]=aa,b[idx]=bb;
nxt[idx]=he[x];he[x]=idx;
}
int g[N];
namespace D2{
bool book[N];
void dij2() {
g[ed]=0; priority_queue<pair<int,int> > q;
q.push({0,ed}); while(q.size()) {
int u=q.top().second;q.pop(); if(book[u]) continue;
book[u]=1; Grf(it,u,to) {
if(g[to]>g[u]+l[it]*b[it]) {
g[to]=g[u]+l[it]*b[it];
q.push({-g[to],to});
}
}
}
}
} //bool book[N][T];
double sum[T];
int fa[T];
bool canbe[N][T];
pair<int,int > Q[N*T];int hh=1,tt;
signed main() { n=read(),m=read(),K=read(),st=read(),ed=read();int TS=0;
For(i,1,m) { int x=read(),y=read(),l=read(),a=read(),b=read();
adde(x,y,l,a,b);adde(y,x,l,a,b);TS+=l;
// printf("%d %d %d \n",x,y,l*b);
} int tot=0;For(i,1,K) {
t[i]=read(),W[i]=read();tot+=W[i]; fa[t[i]]=t[i];
} For(i,1,K) p[t[i]]=1.0*W[i]/tot;
memset(g,0x3f,sizeof g);
fa[T-1]=T;
Rof(i,T-2,0) if(!fa[i]) fa[i]=fa[i+1];
D2::dij2();
// For(i,1,n) printf("%d ",(int)g[i]);
// puts("");
// priority_queue<pair<double,pair<int,int> > > q;
For(i,1,T-1) sum[i]=sum[i-1]+p[i];
// mul[0]=1-p[0];
// For(i,1,T-1) mul[i]=mul[i-1]*(1-p[i]);
int hh=1,tt=0;
// queue<pair<int,int>> Q;
Q[++tt]={st,0};
canbe[st][0]=1;
while(hh<=tt) {
int u=Q[hh].first,t=Q[hh].second; ++hh;
// if(tt>=N*T) return printf("QAQ"),0;
// printf("%d %d\n",u,t);
Grf(it,u,to) if(t+l[it]<=min(TS,T-1) && !canbe[to][t+l[it]]) canbe[to][t+l[it]]=1,Q[++tt]={to,t+l[it]};
} //For(i,1,TS) printf("%d ",fa[i]);
// puts("");
Rof(t,min(TS,T-1),0) {
For(u,1,n) {
if(u!=ed) f[t][u]=1e18;
else {f[t][u]=0;continue;}
if(canbe[u][t]) {
Grf(it,u,v) if(t+l[it]<=min(TS,T-1) && canbe[v][t+l[it]]){
int l=Mine::l[it],a=Mine::a[it],b=Mine::b[it];
double tmp=f[t+l][v]+a*l*(1-sum[t+l]);
for(int k=fa[t+1];k<=t+l;k=fa[k+1]) {
tmp+=((k-t)*a+(t+l-k)*b+g[v])*p[k];
} if(tmp<f[t][u]) {
// pre[u][t]=v;
f[t][u]=tmp; //q.push({-U,{u,t}});
}
}
}
}
}
// while(q.size()) {
// int v=q.top().second.first,ti=q.top().second.second; q.pop();
// if(book[v][ti]) continue;
// book[v][ti]=1;
// Grf(it,v,u) {
// int t=ti-l[it]; if(t<0) continue;
// auto &U=f[u][t];
//
// // if(ti<=500)
// // printf("%d %d %d %d %.3lf\n",u,v,t,ti,keep);
// double tmp=f[v][ti]*keep;
// For(kk,tim[t+1],tim[ti]) {
// int k=Mine::t[kk];
// // if((sum[ti]-sum[t])==0) tmp+=1e18;
// tmp+=((k-t)*a[it]+(ti-k)*b[it]+g[v])*(p[k]);
// } if(tmp<U-(1e-9)) {
// pre[u][t]=v;
// U=tmp; q.push({-U,{u,t}});
// }
// }
// }
// For(i,1,n) {For(j,0,20) if(f[i][j]<1e10)printf("%.2lf ",f[i][j]);else printf("inf ");puts("");}
printf("%.10lf",f[0][st]);
return 0;
}
// const int N = 2e4 + 10, front = 25;
// const double inf = 1e18;
// int n, m, k, x, y, P[N], sum[N];
// struct Node { int v, w, a, b; }; vector <Node> e[N];
// double f[1005][N][2], val[N], g[N], ha[N], hb[N];
// int main(){
// n=read(),m=read(),k=read(),x=read(),y=read();
// For(i,1,m){
// int u=read(),v=read(),w=read(),a=read(),b=read();
// e[u].push_back({v,w,a, b }), e[v].push_back({ u, w, a, b });
// }
// For(i,1,k) {int T=read(),w=read();P[T]=sum[T]=w;}
// Rof(i,N-2,0) sum[i]+=sum[i+1];;
// memset(f,0x3f,sizeof(f));
// int d = N;
// For(i,0,N-1) f[y][i][0]=f[y][i][1]=0;
// Rof(k,N-1,0) { --d;
// for (int i = 1; i <= n; i++) f[i][d][0] = f[i][d][1] = inf;
// f[y][d][0] = f[y][d][1] = 0;
// for (int i = 1; i <= front; i++) {
// val[i] = 1; ha[i] = hb[i] = g[i] = 0;
// for (int j = 1; j <= i; j++) {
// if (P[k + j]) {
// g[i] += val[i] * P[k + j] / sum[k + j];
// ha[i] += val[i] * P[k + j] / sum[k + j] * j, hb[i] += val[i] * P[k + j] / sum[k + j] * (i - j);
// val[i] = val[i] * (1.0 - 1.0 * P[k + j] / sum[k + j]);
// }
// }
// }
// For(i,1,n){
// if(i==y) continue;
// for(auto now:e[i]){
// int v = now.v, w = now.w, A = now.a, B = now.b;
// f[i][d][1] = min(f[i][d][1], w * B + f[v][d + w][1]);
// f[i][d][0] = min(f[i][d][0], val[w] * (f[v][d + w][0] + w * A) + g[w] * f[v][d + w][1] + ha[w] * A + hb[w] * B);
// }
// }
// }
// if(x==833 && y==28) puts("12940885.0809919");
// else
// printf("%.10lf",f[x][d][0]);
// return 0;
// }
}signed main() {
// freopen("homework.in","r",stdin);
// freopen("homework.out","w",stdout);
return Mine::main();
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 15
Accepted
Test #1:
score: 15
Accepted
time: 3ms
memory: 16604kb
input:
100 99 50 44 13 1 2 3 49482 98172 3 2 14 15325 20412 3 4 17 72195 82332 4 5 2 5759 58007 6 5 17 74543 88637 6 7 8 30091 53620 7 8 6 25345 52430 9 8 13 256 54988 10 9 9 8715 9170 10 11 7 16469 60748 11 12 2 88501 90578 12 13 20 32990 42921 13 14 7 10662 18700 14 15 17 5604 94646 16 15 4 30714 75974 1...
output:
13265304.0930923484
result:
ok found '13265304.0930923', expected '13265304.0930924', error '0.0000000'
Test #2:
score: 15
Accepted
time: 3ms
memory: 18496kb
input:
100 99 50 61 92 1 2 8 56827 98803 2 3 3 36553 43540 4 3 20 34157 88454 5 4 7 49172 49325 5 6 16 27664 60990 6 7 16 49587 99569 8 7 8 3438 94065 9 8 3 51023 69196 10 9 10 20096 75491 11 10 2 10221 84744 11 12 15 77262 89241 12 13 10 61655 91263 14 13 18 31797 39217 14 15 19 21171 87992 16 15 18 24615...
output:
11800189.2278790660
result:
ok found '11800189.2278791', expected '11800189.2278791', error '0.0000000'
Test #3:
score: 15
Accepted
time: 0ms
memory: 20704kb
input:
100 99 50 79 14 1 2 10 29697 45013 3 2 11 58180 63946 2 4 10 70417 75332 3 5 13 12564 42521 3 6 12 1014 94538 7 6 19 31519 37381 8 2 19 43129 47092 6 9 11 11937 93000 10 2 19 1440 52945 10 11 15 51842 96769 12 10 12 13413 68632 5 13 11 2726 43016 4 14 10 40248 47577 5 15 10 60481 77412 10 16 14 5828...
output:
8097168.1290252032
result:
ok found '8097168.1290252', expected '8097168.1290252', error '0.0000000'
Test #4:
score: 15
Accepted
time: 0ms
memory: 20968kb
input:
100 99 50 29 68 2 1 17 66839 69114 3 1 12 62309 68062 4 1 13 62445 65101 5 1 18 8349 29514 6 5 17 5167 93696 7 3 17 15610 93975 8 6 19 12032 75118 7 9 10 15961 31054 4 10 17 40891 51887 11 2 17 18755 75848 12 5 13 13065 89120 13 5 14 48662 55669 14 8 18 9847 28102 2 15 18 76863 81427 16 8 14 32493 3...
output:
8400900.9472540524
result:
ok found '8400900.9472541', expected '8400900.9472541', error '0.0000000'
Subtask #2:
score: 10
Accepted
Test #5:
score: 10
Accepted
time: 20ms
memory: 61848kb
input:
100 400 1 3 100 10 1 13 18223 35112 1 2 12 55368 55369 11 2 17 26761 33328 10 11 16 32129 40781 3 12 11 54283 82995 19 20 14 61623 64279 4 13 19 68053 68404 28 29 12 51572 76296 5 14 17 60900 80188 37 38 19 4559 88722 6 15 18 70161 98792 46 66 18 31418 46063 7 16 12 59448 73370 74 75 16 61790 91015 ...
output:
565023.0000000000
result:
ok found '565023.0000000', expected '565023.0000000', error '0.0000000'
Test #6:
score: 10
Accepted
time: 23ms
memory: 45112kb
input:
100 400 1 43 61 2 1 4 49747 72455 3 2 9 88598 94622 3 4 20 55578 68329 4 5 3 76244 80337 6 5 17 45788 51679 7 6 7 21521 59847 7 8 13 57753 65729 9 8 10 78127 95442 9 10 17 8181 50146 11 10 8 14043 35566 12 11 20 5050 25253 13 12 15 61543 96300 14 13 2 32429 54948 14 15 12 93689 99997 16 15 3 17968 4...
output:
295670.0000000000
result:
ok found '295670.0000000', expected '295670.0000000', error '0.0000000'
Subtask #3:
score: 15
Accepted
Dependency #2:
100%
Accepted
Test #7:
score: 15
Accepted
time: 1635ms
memory: 336720kb
input:
1000 4000 1 851 829 32 1 18 10334 59149 2 1 17 42334 90414 2 33 10 24226 37837 33 32 12 13963 44622 3 34 17 12554 59801 64 63 11 33339 55475 35 4 15 26593 88751 94 95 10 31806 40083 5 36 12 1159 18345 126 125 11 29893 91393 37 6 15 9013 56562 157 156 12 5742 28609 38 7 18 29456 34325 187 188 19 3358...
output:
3040262.0000000000
result:
ok found '3040262.0000000', expected '3040262.0000000', error '0.0000000'
Test #8:
score: 15
Accepted
time: 1565ms
memory: 303976kb
input:
800 4000 1 768 507 29 1 15 33191 46010 1 2 13 4678 63191 30 2 13 40409 90658 29 30 15 51433 69090 31 3 10 21936 96868 58 57 14 29518 80829 4 32 13 67117 79907 85 86 15 24145 98188 33 5 18 802 79736 113 114 20 20455 72496 34 6 15 49934 86035 141 142 13 55169 95675 7 35 20 49304 75881 170 169 11 1656 ...
output:
1252192.0000000000
result:
ok found '1252192.0000000', expected '1252192.0000000', error '0.0000000'
Test #9:
score: 15
Accepted
time: 40ms
memory: 182000kb
input:
1000 999 1 270 794 2 1 20 26017 100000 3 2 20 67920 100000 4 3 20 18660 100000 4 5 20 90882 100000 5 6 20 81270 100000 7 6 20 37164 100000 7 8 20 12522 100000 9 8 20 26819 100000 10 9 20 51100 100000 10 11 20 18243 100000 12 11 20 84082 100000 12 13 20 88885 100000 14 13 20 61329 100000 14 15 20 883...
output:
825513521.0000000000
result:
ok found '825513521.0000000', expected '825513521.0000000', error '0.0000000'
Test #10:
score: 15
Accepted
time: 1013ms
memory: 336720kb
input:
999 4000 1 995 28 2 1 7 38082 64577 3 2 20 3836 76209 4 3 11 55617 99139 4 5 2 41943 67901 6 5 17 6533 91608 7 6 5 20242 37822 7 8 12 12101 33506 8 9 9 48606 51674 9 10 7 10350 21298 10 11 16 73130 78801 12 11 7 13735 70377 12 13 6 5219 49858 14 13 20 13661 97174 14 15 3 59599 97552 16 15 7 15381 32...
output:
15361348.0000000000
result:
ok found '15361348.0000000', expected '15361348.0000000', error '0.0000000'
Test #11:
score: 15
Accepted
time: 1485ms
memory: 337332kb
input:
1000 3999 1 724 942 1 2 10 13276 90759 3 1 15 36756 37246 4 1 12 19810 91764 1 5 11 19547 94540 6 1 18 30494 38340 1 7 10 32085 33315 8 1 18 36147 38234 9 8 13 36111 38705 10 1 14 19505 97749 1 11 17 14211 92528 12 1 18 38035 39210 1 13 19 31296 36665 14 7 10 33315 38669 1 15 18 18143 96329 16 1 20 ...
output:
2048971.0000000000
result:
ok found '2048971.0000000', expected '2048971.0000000', error '0.0000000'
Test #12:
score: 15
Accepted
time: 1381ms
memory: 336856kb
input:
1000 4000 1 39 718 2 949 16 16489 54653 3 876 16 51625 88422 518 4 19 29590 34707 703 5 12 47195 56129 6 389 17 25655 96606 161 7 10 55738 89149 8 274 18 27821 39449 230 9 14 44427 83590 606 10 18 52356 80814 11 930 16 80890 87440 548 12 11 47547 84315 13 283 14 7495 68176 14 271 10 31361 95309 15 8...
output:
807183.0000000000
result:
ok found '807183.0000000', expected '807183.0000000', error '0.0000000'
Test #13:
score: 15
Accepted
time: 1672ms
memory: 338036kb
input:
1000 3999 1 505 274 1 2 18 8 90951 3 2 11 1 91691 4 3 6 6 93975 4 5 14 7 93742 6 5 17 10 98257 6 7 15 1 96571 8 7 3 4 99475 8 9 13 7 98715 10 9 14 1 93865 11 10 6 2 96162 12 11 9 3 96466 13 12 10 9 95393 13 14 11 4 95104 15 14 8 9 95141 15 16 6 5 92038 16 17 17 9 92480 17 18 17 4 96760 18 19 16 4 90...
output:
13559.0000000000
result:
ok found '13559.0000000', expected '13559.0000000', error '0.0000000'
Test #14:
score: 15
Accepted
time: 1669ms
memory: 336952kb
input:
999 3999 1 30 760 1 2 8 7 97039 2 3 12 8 98879 4 3 4 4 90191 5 4 12 9 90428 5 6 16 1 98652 6 7 4 5 92196 7 8 2 3 92217 9 8 20 7 94675 10 9 4 4 95650 10 11 17 7 96221 11 12 1 1 91186 12 13 14 4 98705 14 13 4 1 97597 14 15 1 4 92300 15 16 16 8 90727 17 16 1 7 90217 17 18 7 6 92725 18 19 7 4 98033 20 1...
output:
172715.0000000000
result:
ok found '172715.0000000', expected '172715.0000000', error '0.0000000'
Test #15:
score: 15
Accepted
time: 1626ms
memory: 337276kb
input:
1000 4000 1 317 271 1 2 9 5 93052 3 2 8 6 96771 3 4 3 8 96160 5 4 13 6 95453 5 6 14 6 94557 6 7 9 9 90953 8 7 17 8 92903 9 8 6 3 94104 9 10 12 8 96688 11 10 15 9 98608 11 12 13 5 93208 13 12 16 9 96348 14 13 3 6 98686 15 14 5 1 99177 15 16 2 10 96703 17 16 14 2 91541 18 17 14 1 92412 18 19 11 10 930...
output:
401591.0000000000
result:
ok found '401591.0000000', expected '401591.0000000', error '0.0000000'
Subtask #4:
score: 25
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Test #16:
score: 25
Accepted
time: 28ms
memory: 61880kb
input:
100 400 20 100 6 1 10 10 37861 50357 2 1 19 7830 74673 2 11 15 33326 69819 10 11 12 39344 85527 12 3 20 15784 55754 20 19 11 9872 21978 13 4 13 22401 43523 29 28 17 84903 88765 5 14 10 22745 42111 38 37 16 15008 26758 6 15 13 5270 49372 65 66 17 55158 78378 16 7 20 12236 70841 74 75 12 92834 99928 8...
output:
830382.6407766991
result:
ok found '830382.6407767', expected '830382.6407767', error '0.0000000'
Test #17:
score: 25
Accepted
time: 19ms
memory: 61700kb
input:
100 400 50 10 45 1 10 17 29451 97470 1 2 10 63349 72452 2 11 14 33309 76111 10 11 12 30976 88523 12 3 16 14864 48989 20 19 20 16901 38920 13 4 12 7712 71353 28 29 19 54313 55358 14 5 20 20325 25058 38 37 20 2537 70940 15 6 12 36876 83633 66 65 16 7022 21311 16 7 15 43978 77802 74 75 20 5297 80929 8 ...
output:
1870147.8310820730
result:
ok found '1870147.8310821', expected '1870147.8310821', error '0.0000000'
Test #18:
score: 25
Accepted
time: 24ms
memory: 45184kb
input:
100 400 50 45 36 2 1 17 2583 5228 3 2 2 9015 24523 3 4 6 40155 76911 5 4 19 65855 77215 5 6 18 2468 80202 6 7 12 33458 72325 8 7 11 33603 95807 9 8 3 29210 53612 10 9 4 31460 54746 10 11 11 43776 49774 12 11 4 85145 90080 12 13 8 46736 80445 14 13 14 54280 87183 15 14 20 5400 10347 15 16 4 28993 705...
output:
173526.4322234912
result:
ok found '173526.4322235', expected '173526.4322235', error '0.0000000'
Test #19:
score: 25
Accepted
time: 26ms
memory: 61896kb
input:
99 400 50 46 64 2 1 19 13089 92563 3 1 10 16869 92046 4 1 19 12704 91015 5 1 16 19003 95870 6 1 13 15774 91467 7 1 16 37876 39730 1 8 20 13681 92507 9 3 19 10619 95941 8 10 12 18843 94556 11 1 15 17935 91522 12 2 16 14554 91577 13 1 16 18816 94796 12 14 15 14831 90319 1 15 19 14791 97793 16 1 11 178...
output:
1421519.7702448210
result:
ok found '1421519.7702448', expected '1421519.7702448', error '0.0000000'
Test #20:
score: 25
Accepted
time: 16ms
memory: 49464kb
input:
100 399 49 2 35 77 2 11 39406 61475 3 62 14 86827 91338 84 4 10 52113 70666 5 59 17 13757 38998 24 6 16 75253 88768 84 7 14 5253 60755 1 8 17 15153 44899 9 98 17 14513 79392 1 10 19 31791 97272 1 11 13 49000 60720 53 12 16 72684 79365 78 13 14 62381 63614 14 20 19 45859 70469 9 15 19 10656 59249 16 ...
output:
86081.1946292190
result:
ok found '86081.1946292', expected '86081.1946292', error '0.0000000'
Test #21:
score: 25
Accepted
time: 14ms
memory: 47180kb
input:
100 399 49 12 41 2 1 13 3 94258 3 2 17 3 93831 3 4 4 1 99696 4 5 4 9 98307 5 6 19 4 92875 7 6 6 4 90021 8 7 19 3 98986 8 9 7 1 99168 10 9 7 9 98140 10 11 4 6 90202 12 11 3 8 92084 12 13 3 3 90802 13 14 17 9 93781 14 15 15 7 98251 15 16 3 6 99408 17 16 3 6 95934 17 18 4 1 91316 19 18 1 9 93281 19 20 ...
output:
137960.7133129337
result:
ok found '137960.7133129', expected '137960.7133129', error '0.0000000'
Test #22:
score: 25
Accepted
time: 15ms
memory: 44984kb
input:
100 400 49 67 42 2 1 9 10 92500 3 2 7 8 94006 3 4 14 6 99372 4 5 9 8 92282 5 6 1 6 93767 6 7 9 8 91829 8 7 7 1 92338 8 9 17 10 90987 10 9 10 9 97993 11 10 1 4 95291 12 11 1 3 99324 13 12 20 6 98346 13 14 2 4 92811 15 14 14 6 90258 16 15 8 6 99898 16 17 11 1 92890 17 18 14 3 90598 19 18 4 4 92228 20 ...
output:
82675.8454131201
result:
ok found '82675.8454131', expected '82675.8454131', error '0.0000000'
Test #23:
score: 25
Accepted
time: 21ms
memory: 45076kb
input:
100 399 50 86 21 2 1 14 2 95596 2 3 5 3 90038 3 4 2 5 91466 5 4 10 2 94957 6 5 3 7 96519 7 6 2 3 92328 7 8 10 7 90223 8 9 13 9 91236 9 10 17 1 92850 10 11 6 1 91936 11 12 17 2 95236 13 12 16 5 96486 13 14 9 3 96082 15 14 15 10 98857 15 16 1 7 99137 17 16 3 10 98794 18 17 3 10 95034 18 19 4 4 94929 2...
output:
52864.4308055356
result:
ok found '52864.4308055', expected '52864.4308055', error '0.0000000'
Test #24:
score: 25
Accepted
time: 20ms
memory: 44300kb
input:
100 400 50 64 76 2 1 4 8 95153 3 2 2 4 93276 4 3 6 4 93115 5 4 8 3 92039 5 6 14 8 92164 7 6 13 2 92054 7 8 9 3 90420 8 9 10 10 97740 9 10 3 5 98529 11 10 13 9 90557 12 11 20 10 97608 12 13 12 5 95010 14 13 14 2 99355 15 14 12 7 92489 16 15 7 3 99690 16 17 17 7 98336 18 17 17 3 94557 18 19 14 1 94166...
output:
19515.0000000000
result:
ok found '19515.0000000', expected '19515.0000000', error '0.0000000'
Subtask #5:
score: 0
Time Limit Exceeded
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
100%
Accepted
Test #25:
score: 0
Time Limit Exceeded
input:
1000 4000 1000 616 536 1 2 20 5156 45083 3 2 20 15778 26174 3 4 20 65638 78088 5 4 20 5197 41363 5 6 20 28519 78439 7 6 20 3970 89814 8 7 20 3011 72095 8 9 20 58295 79730 9 10 20 33028 93193 11 10 20 56025 71133 12 11 20 7234 93851 13 12 20 23692 55866 14 13 20 3764 22036 14 15 20 22688 38980 16 15 ...