QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#416085 | #6334. Passport | snpmrnhlol | 6 | 704ms | 86384kb | C++14 | 3.0kb | 2024-05-21 15:48:52 | 2024-05-21 15:48:52 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5;
vector <pair<int,int>> e[4*N];
deque <int> q;
priority_queue <pair<int,int>> pq;
int dist[4*N][3];
bool vis[4*N];
int tr[N];
int n;
void buildtree(int l,int r,int node){
if(l == r){
tr[l] = node;
}else{
int mij = (l + r)/2;
buildtree(l,mij,node*2 + 1);
buildtree(mij + 1,r,node*2 + 2);
}
if(node != 0){
e[node].push_back({(node - 1)/2,0});
}
}
void updtree(int ql,int qr,int x,int l = 0,int r = n - 1,int node = 0){
if(r < ql || qr < l)return;
if(ql <= l && r <= qr){
e[node].push_back({tr[x],1});
//cout<<"edge:"<<node<<' '<<tr[x]<<'\n';
return;
}else{
int mij = (l + r)/2;
updtree(ql,qr,x,l,mij,node*2 + 1);
updtree(ql,qr,x,mij + 1,r,node*2 + 2);
}
}
int main(){
cin>>n;
buildtree(0,n - 1,0);
for(int i = 0;i < n;i++){
int l1,r1;
cin>>l1>>r1;
l1--;r1--;
updtree(l1,r1,i);
}
for(int i = 0;i < 4*n;i++){
dist[i][0] = -1;
dist[i][1] = -1;
dist[i][2] = -1;
}
dist[tr[0]][0] = 0;
q.push_back(tr[0]);
while(!q.empty()){
int x = q.front();
q.pop_front();
if(vis[x])continue;
vis[x] = 1;
for(auto i:e[x]){
if(dist[i.first][0] == -1 || dist[i.first][0] > dist[x][0] + i.second){
dist[i.first][0] = dist[x][0] + i.second;
if(i.second)q.push_back(i.first);
else q.push_front(i.first);
}
}
}
for(int i = 0;i < 4*n;i++){
vis[i] = 0;
}
dist[tr[n - 1]][1] = 0;
q.push_back(tr[n - 1]);
while(!q.empty()){
int x = q.front();
q.pop_front();
if(vis[x])continue;
vis[x] = 1;
for(auto i:e[x]){
if(dist[i.first][1] == -1 || dist[i.first][1] >= dist[x][1] + i.second){
dist[i.first][1] = dist[x][1] + i.second;
if(i.second)q.push_back(i.first);
else q.push_front(i.first);
}
}
}
for(int i = 0;i < 4*n;i++){
if(dist[i][0] == -1 || dist[i][1] == -1)continue;
pq.push({-dist[i][0]-dist[i][1],i});
dist[i][2] = dist[i][0] + dist[i][1];
}
while(!pq.empty()){
int x = -pq.top().first;
int id = pq.top().second;
pq.pop();
if(dist[id][2] != x)continue;
//cout<<x<<' '<<id<<'\n';
for(auto i:e[id]){
if(dist[i.first][2] > dist[id][2] + i.second){
dist[i.first][2] = dist[id][2] + i.second;
pq.push({-dist[i.first][2],i.first});
}
}
}
int q;
cin>>q;
for(int i = 0;i < q;i++){
int x;
cin>>x;
x--;
if(dist[tr[x]][2] == -1){
cout<<-1<<'\n';
}else{
cout<<dist[tr[x]][2]<<'\n';
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 6
Accepted
Test #1:
score: 6
Accepted
time: 4ms
memory: 26388kb
input:
2 1 1 1 2 1 1
output:
-1
result:
ok single line: '-1'
Test #2:
score: 0
Accepted
time: 4ms
memory: 26356kb
input:
2 1 2 2 2 1 1
output:
1
result:
ok single line: '1'
Test #3:
score: 0
Accepted
time: 591ms
memory: 82096kb
input:
196001 1 408 2 37822 1 1221 1 160899 4 62751 3 21706 2 4118 8 70696 8 4916 3 24286 9 443 8 171744 11 170980 7 3541 12 16428 8 71164 1 186827 11 234 2 23141 4 17143 21 9522 10 24 19 15936 3 15884 17 426 14 3188 17 168317 4 1560 25 35 16 39439 21 122 4 17507 8 97645 11 824 25 59856 30 9265 7 151420 37...
output:
3
result:
ok single line: '3'
Test #4:
score: 0
Accepted
time: 252ms
memory: 59088kb
input:
198001 1 17 1 19 1 4 2 20 3 15 6 10 1 20 3 9 3 9 10 19 6 27 8 29 12 24 3 23 8 23 16 19 11 23 1 19 13 30 19 32 4 28 15 33 23 33 8 36 16 30 23 40 11 42 27 34 20 30 21 36 31 39 30 35 32 33 29 48 27 43 33 41 25 53 28 51 29 56 37 55 35 54 36 52 35 44 31 58 36 54 42 56 47 49 41 59 37 64 44 50 34 55 41 56 ...
output:
15219
result:
ok single line: '15219'
Test #5:
score: 0
Accepted
time: 172ms
memory: 54436kb
input:
200000 1 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 12 11 13 12 14 13 15 14 16 15 17 16 18 17 19 18 20 19 21 20 22 21 23 22 24 23 25 24 26 25 27 26 28 27 29 28 30 29 31 30 32 31 33 32 34 33 35 34 36 35 37 36 38 37 39 38 40 39 41 40 42 41 43 42 44 43 45 44 46 45 47 46 48 47 49 48 50 49 51 50 52 51 53...
output:
199999
result:
ok single line: '199999'
Test #6:
score: 0
Accepted
time: 176ms
memory: 57196kb
input:
195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195000 1 195...
output:
1
result:
ok single line: '1'
Test #7:
score: 0
Accepted
time: 73ms
memory: 54732kb
input:
156789 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 78394 1 783...
output:
-1
result:
ok single line: '-1'
Subtask #2:
score: 0
Wrong Answer
Test #8:
score: 16
Accepted
time: 4ms
memory: 24868kb
input:
2 1 1 1 2 1 2
output:
1
result:
ok single line: '1'
Test #9:
score: 0
Accepted
time: 4ms
memory: 26080kb
input:
2 1 2 2 2 1 2
output:
-1
result:
ok single line: '-1'
Test #10:
score: 0
Accepted
time: 0ms
memory: 23468kb
input:
6 1 1 2 2 1 3 3 5 5 6 1 6 1 4
output:
3
result:
ok single line: '3'
Test #11:
score: -16
Wrong Answer
time: 4ms
memory: 24912kb
input:
9 1 1 2 2 3 3 1 4 2 8 5 7 4 9 8 8 9 9 1 6
output:
4
result:
wrong answer 1st lines differ - expected: '3', found: '4'
Subtask #3:
score: 0
Wrong Answer
Test #19:
score: 24
Accepted
time: 3ms
memory: 26860kb
input:
2337 1 3 2 77 1 1397 2 222 3 62 6 1896 7 10 6 950 9 9 10 16 11 455 9 588 13 16 7 1245 9 1342 8 1727 7 122 11 653 9 1094 2 57 11 81 19 1290 6 1584 16 79 14 215 21 61 27 27 16 1458 16 198 26 180 31 31 11 240 33 36 11 121 34 1542 9 1752 14 456 36 43 36 2244 40 40 4 517 42 662 31 1350 33 162 30 843 28 1...
output:
4
result:
ok single line: '4'
Test #20:
score: -24
Wrong Answer
time: 3ms
memory: 25216kb
input:
2486 1 12 2 8 1 7 3 12 2 11 3 15 1 8 4 11 9 15 3 21 11 13 4 15 9 21 9 19 5 15 8 20 8 25 16 24 11 29 11 23 18 23 14 32 17 24 13 27 15 30 21 34 16 29 20 35 19 32 29 34 20 39 21 43 29 40 28 43 26 44 31 45 28 43 35 38 30 40 37 46 40 43 42 42 42 45 43 54 39 51 40 51 45 54 46 57 39 53 47 53 47 54 41 59 49...
output:
315
result:
wrong answer 1st lines differ - expected: '314', found: '315'
Subtask #4:
score: 0
Wrong Answer
Test #28:
score: 8
Accepted
time: 7ms
memory: 25192kb
input:
2419 1 883 1 29 3 41 4 2201 1 808 6 45 7 1456 6 134 6 1372 1 1776 4 441 7 208 5 28 4 604 7 56 9 617 8 2115 15 60 13 456 10 2071 18 23 18 39 5 39 21 35 4 75 25 44 24 640 21 30 4 860 30 31 18 78 32 779 1 927 33 34 19 59 34 181 21 502 23 155 39 39 2 254 30 641 42 50 10 2000 41 2220 18 632 35 48 27 905 ...
output:
3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 4 4 3 4 4 3 4 3 4 4 4 3 5 4 4 3 4 4 4 4 4 -1 3 4 4 3 3 4 4 4 3 3 4 4 3 -1 3 4 4 4 3 -1 4 4 4 3 4 4 4 4 4 4 3 3 4 5 4 3 3 4 4 3 4 4 3 4 3 4 4 -1 -1 3 4 4 3 4 4 3 4 3 4 5 4 4 4 4 3 4 4 4 3 4 5 4 4 4 4 4 3 4 4 4 4 4 4 4 3 4 4 4 -1 4 3 3 3 4 4 4 5 4 4 3 4 4 5 -1 4 4 4 4...
result:
ok 2419 lines
Test #29:
score: -8
Wrong Answer
time: 15ms
memory: 26236kb
input:
2500 1 7 1 6 1 8 1 15 5 14 2 17 5 18 8 17 2 13 3 12 3 14 12 22 4 15 6 18 14 16 8 20 6 22 10 22 12 28 11 28 20 24 12 33 16 29 23 28 20 28 19 35 18 30 24 39 20 33 19 33 30 40 23 32 26 37 28 36 30 45 35 40 36 41 34 44 34 46 29 44 37 50 33 44 39 49 35 54 40 54 39 46 36 50 47 54 44 49 46 61 42 58 41 58 4...
output:
314 314 314 314 315 315 315 315 315 315 315 315 315 315 315 314 314 314 314 314 315 314 315 315 315 314 314 315 314 314 315 315 315 315 314 315 315 315 315 314 314 315 315 314 314 315 314 315 315 314 314 314 314 314 314 314 315 314 314 314 314 314 315 315 315 315 314 315 314 314 314 314 314 314 314 ...
result:
wrong answer 4th lines differ - expected: '313', found: '314'
Subtask #5:
score: 0
Wrong Answer
Test #33:
score: 0
Wrong Answer
time: 704ms
memory: 86384kb
input:
196830 1 67357 2 183304 3 23390 4 54 1 145887 3 27807 3 12376 1 1013 3 113274 3 191874 6 23342 9 2113 13 94245 3 141449 10 1727 3 51 17 99028 6 193803 8 7452 6 121537 9 23658 18 611 6 4756 4 5141 8 8547 8 66922 13 7021 9 72 3 53043 16 167381 2 15530 5 192 33 33 9 92655 10 36182 20 19992 36 24454 1 6...
output:
3 3 4 4 3 4 4 3 4 3 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 3 4 4 -1 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 3 4 4 4 4 5 4 4 4 4 4 5 4 4 4 4 4 4 4 4 4 4 4 -1 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 5 -1 4 4 4 5 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4...
result:
wrong answer 3rd lines differ - expected: '3', found: '4'