QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#416085#6334. Passportsnpmrnhlol6 704ms86384kbC++143.0kb2024-05-21 15:48:522024-05-21 15:48:52

Judging History

你现在查看的是最新测评结果

  • [2024-05-21 15:48:52]
  • 评测
  • 测评结果:6
  • 用时:704ms
  • 内存:86384kb
  • [2024-05-21 15:48:52]
  • 提交

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'