QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#445715 | #6400. Game: Celeste | haozexu134 | RE | 234ms | 63712kb | C++14 | 2.6kb | 2024-06-16 10:19:46 | 2024-06-16 10:19:47 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
typedef long long ll;
typedef unsigned long long ull;
const ull P=133331;
struct SegT{
int ls,rs;
ull hash;
}t[N*4];
int f[N],tot,x[N],a[N],L,R,n;
ull powP[N];
#define ls(p) (t[p].ls)
#define rs(p) (t[p].rs)
#define hsh(p) (t[p].hash)
void Update(int p,int l,int r){
int mid=(l+r)/2;
hsh(p)=hsh(ls(p))*powP[r-mid]+hsh(rs(p));
}
int Alloc(int cpy){return t[++tot]=t[cpy],tot;}
void Insert(int &p,int old,int l,int r,int x){
p=Alloc(old);
if(l==r) return hsh(p)++,void();
int mid=(l+r)/2;
if(x<=mid) Insert(ls(p),ls(old),l,mid,x);
else Insert(rs(p),rs(old),mid+1,r,x);
Update(p,l,r);
}
bool LessThan(int a,int b,int l,int r){
if(hsh(a)==hsh(b)) return true;
if(l==r) return hsh(a)<=hsh(b);
int mid=(l+r)/2;
if(hsh(rs(a))!=hsh(rs(b))) return LessThan(rs(a),rs(b),mid+1,r);
else return LessThan(ls(a),ls(b),l,mid);
}
vector<int> ans;
void Output(int a,int l,int r){
if(l==r){
if(hsh(a)) for(int i=1;i<=hsh(a);i++) ans.push_back(l);
return;
}
int mid=(l+r)/2;
Output(rs(a),mid+1,r),Output(ls(a),l,mid);
}
void dp(){
fill(f+1,f+1+n,-1),f[0]=0;
deque<int> q;Insert(f[1],f[0],1,n,a[1]);
auto add=[&](int i){
while(!q.empty() and LessThan(f[q.back()],f[i],1,n)) q.pop_back();
q.push_back(i);
};
q.push_back(1);int cur=2;
for(int i=2;i<=n;i++){
// cerr<<"block "<<i<<"\n";
while(cur<i and x[cur]<x[i]-R) cur++;
while(cur<i and (x[i]-R<=x[cur] and x[cur]<=x[i]-L)) add(cur++);
while(!q.empty() and (x[q.front()]<x[i]-R or f[q.front()]==-1)) q.pop_front();
if(!q.empty() and (x[i]-R<=x[q.front()] and x[q.front()]<=x[i]-L)) Insert(f[i],f[q.front()],1,n,a[i]);//cout<<"#$!\n";
// cout<<cur<<" "<<i<<"!@\n";
}
}
void Clear(){
#define C(x) (memset(x,0,sizeof x))
// for(int i=0;i<=tot;i++) ls(i)=rs(i)=hsh(i)=0;
tot=0;
}
void Read(){
Clear(),cin>>n>>L>>R,powP[0]=1;;
for(int i=1;i<=n;i++) cin>>x[i];
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) powP[i]=powP[i-1]*P;
}
int main(){
ios::sync_with_stdio(false);
int T;cin>>T;
while(T--){
Read(),dp();
if(f[n]==-1) cout<<"-1\n";
else{
ans.clear();
Output(f[n],1,n),cout<<ans.size()<<"\n";
for(int i:ans) cout<<i<<" ";
cout<<"\n";
}
}
}
/*FOOTNOTE
//tmp paste
0000
57 8 110000
57 8 11
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 51 52 53 54 55 56 57
11 16 7 7 10 13 9 14 10 1 12 4 8 13 3 20 16 7 16 19 20 8 19 7 16 6 17 13 7 19 17 11 12 17 6 3 7 8 14 2 4 15 5 18 16 7 20 9 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 11 1 1 1 1
*/
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 9700kb
input:
2 5 2 3 1 2 3 4 5 5 2 3 1 4 3 1 2 1 4 7 3 3 3
output:
3 5 4 3 -1
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 178ms
memory: 10100kb
input:
10000 57 8 11 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 51 52 53 54 55 56 57 11 16 7 7 10 13 9 14 10 1 12 4 8 13 3 20 16 7 16 19 20 8 19 7 16 6 17 13 7 19 17 11 12 17 6 3 7 8 14 2 4 15 5 18 16 7 20 9 1...
output:
7 20 20 19 14 12 11 3 -1 6 6 5 3 2 1 1 -1 185 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19 18 18 18 18 18 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 12 12 12 12 12 12 12 ...
result:
ok 16378 lines
Test #3:
score: 0
Accepted
time: 154ms
memory: 9812kb
input:
10000 86 230405 991217 3291 11742 17120 30018 47955 52215 96227 98031 100118 106944 117304 121905 124796 135037 164100 164654 169459 177527 206513 212554 228740 229590 261521 295062 300116 312030 326533 329513 349983 353580 355242 356731 363347 368753 389545 396163 399755 409927 426532 427781 441386...
output:
4 20 19 2 1 4 19 12 6 3 -1 -1 24 20 19 18 18 18 18 18 18 18 18 16 16 16 16 15 15 13 12 11 9 5 4 2 2 -1 2 4 3 3 6 4 2 4 13 12 5 5 3 20 17 5 3 20 8 3 -1 -1 1 1 -1 5 20 20 19 15 14 2 13 12 -1 -1 4 20 20 8 5 -1 -1 -1 6 20 16 16 16 13 9 -1 -1 -1 3 19 17 11 3 19 15 9 -1 -1 -1 -1 -1 -1 2 7 3...
result:
ok 14975 lines
Test #4:
score: 0
Accepted
time: 162ms
memory: 9844kb
input:
10000 101 17 17 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98...
output:
-1 15 10 10 10 10 10 10 9 9 9 9 7 7 6 6 3 -1 44 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 7 6 6 6 6 6 6 6 5 4 3 3 3 3 11 10 10 10 10 10 9 8 7 6 6 2 6 10 10 10 10 8 3 18 10 10 10 10 10 10 8 8 8 8 7 7 7 6 5 3 2 2 -1 -1 1 1 -1 -1 -1 20 10 10 10 10 10 10 10 10 10 9 8 8...
result:
ok 16344 lines
Test #5:
score: 0
Accepted
time: 145ms
memory: 9864kb
input:
10000 18 16 16 1 2 3 4 5 6 7 8 10 11 12 13 14 16 17 18 19 20 2 2 2 1 2 1 1 2 2 2 2 1 2 2 1 2 1 1 403 3 7 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ...
output:
-1 126 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 10 2 2 2 2 2 2 1 1 1...
result:
ok 16420 lines
Test #6:
score: 0
Accepted
time: 148ms
memory: 9920kb
input:
10000 251 1 1 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 9...
output:
251 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 16925 lines
Test #7:
score: 0
Accepted
time: 215ms
memory: 27088kb
input:
100 23882 222 481 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ...
output:
102 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19...
result:
ok 167 lines
Test #8:
score: 0
Accepted
time: 164ms
memory: 20116kb
input:
100 3789 29850 70419 774 1032 1649 1723 2194 3021 3114 3308 3344 3360 3688 3781 3967 4245 4878 4966 5099 5597 5617 5638 5645 5784 5871 6136 6158 6358 6483 6600 6766 6775 6800 6895 7119 7439 7485 7696 7734 8432 8493 8581 8627 9203 9576 9885 10062 10290 10454 10466 10537 10717 10861 11048 11484 11497 ...
output:
30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19 18 3 -1 -1 -1 4 20 20 18 10 -1 6 20 20 20 20 15 9 -1 -1 5 20 20 20 18 4 4 20 20 13 7 -1 4 20 20 19 18 -1 -1 -1 -1 2 16 8 -1 3 20 20 6 8 20 20 20 20 20 20 15 12 -1 -1 -1 17 20 20 20 20 20 20 20 20 20 20 20...
result:
ok 139 lines
Test #9:
score: 0
Accepted
time: 208ms
memory: 23108kb
input:
100 181 1947 1967 17 23 47 53 55 68 84 92 110 147 153 164 191 198 207 209 215 221 255 269 275 302 305 322 324 363 370 373 385 405 407 429 451 458 466 472 478 500 508 544 557 561 564 565 569 587 600 610 617 630 645 659 665 670 674 715 726 744 747 764 769 770 774 782 786 787 794 795 824 852 860 873 87...
output:
-1 -1 -1 12 10 10 10 10 10 10 10 10 10 10 9 4 12 10 10 10 10 10 10 10 10 10 10 5 5 13 10 10 10 10 10 10 10 10 10 10 10 5 4 -1 22 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 5 2 215 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
result:
ok 166 lines
Test #10:
score: 0
Accepted
time: 184ms
memory: 25204kb
input:
100 5589 851 904 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 9...
output:
-1 267 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3...
result:
ok 184 lines
Test #11:
score: 0
Accepted
time: 116ms
memory: 30244kb
input:
100 6944 1905 1926 2 3 4 6 7 8 9 10 11 13 15 16 17 18 20 22 23 24 25 29 31 32 33 34 35 39 40 42 43 44 45 46 47 49 51 54 55 57 58 60 61 62 63 64 67 68 69 71 72 74 75 76 78 79 80 81 82 83 84 85 86 90 91 92 94 95 96 98 100 104 105 106 107 108 109 111 112 117 118 119 120 123 125 126 127 128 131 133 134 ...
output:
-1 -1 296 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 118 lines
Test #12:
score: 0
Accepted
time: 234ms
memory: 63712kb
input:
10 93999 762 838 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 9...
output:
124 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 2332 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...
result:
ok 20 lines
Test #13:
score: -100
Runtime Error
input:
10 10628 1687 1731 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97...
output:
-1 -1 76 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 -1