UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#170474#32. SortKevinX100589ms2304kbC++1.8kb2023-05-03 17:55:352023-05-03 17:55:37

answer

#include <algorithm>
#include <iostream>
#include <vector>
#include <cstdio>

using namespace std;

struct node {
    long long index;
    long long element;

    node(long long i, long long e) {
        this->index = i;
        this->element = e;
    }
};

bool operator<(node a, node b) {
    return a.element < b.element;
}

vector<node> a;
vector<long long> a2;

void Sort(long long left, long long right, long long v) {
    if (left == right) {
        return;
    }
    long long mid = (left + right) / 2;
    Sort(left, mid, v);
    Sort(mid + 1, right, v);
    long long i = mid;
    long long l = mid, r = mid;
    while (i >= left && a2[i] > v) {
        l = i;
        i--;
    }
    long long j = mid + 1;
    while (j <= right && a2[j] <= v) {
        r = j;
        j++;
    }
    if (l != r) {
        printf("%lld %lld\n", l, r);
        reverse(a2.begin() + l, a2.begin() + r + 1);
    }
}

void Merge(long long left, long long right) {
    if (left == right) {
        return;
    }
    long long mid = (left + right) / 2;
    Sort(left, right, mid);
    Merge(left, mid);
    Merge(mid + 1, right);
}

inline int read() {
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-') f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        x = x * 10 + ch - 48;
        ch = getchar();
    }
    return x * f;
}


int main() {
    long long n = read();
    a.push_back(node(-1, -1));
    for (long long i = 1; i <= n; i++) {
        a.push_back(node(i, read()));
    }
    sort(a.begin() + 1, a.end());
    a2.resize(n + 1, -1);
    for (long long i = 1; i < a.size(); i++) {
        a2[a[i].index] = i;
    }
    Merge(1, n);
    printf("-1 -1\n");
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 0ms
memory: 1196kb

input:

5
0 0 0 1 1

output:

1 2
2 3
2 3
1 2
-1 -1

result:

ok Correct.

Test #2:

score: 5
Accepted
time: 0ms
memory: 1192kb

input:

5
716816476 646500411 807499637 544792531 128057616

output:

1 2
4 5
2 5
1 2
2 3
1 2
4 5
-1 -1

result:

ok Correct.

Test #3:

score: 5
Accepted
time: 1ms
memory: 1196kb

input:

7
0 0 1 0 0 0 0

output:

1 2
3 4
2 3
4 5
2 3
1 2
5 6
6 7
-1 -1

result:

ok Correct.

Test #4:

score: 5
Accepted
time: 0ms
memory: 1196kb

input:

7
685386610 762888212 32009424 450956771 498508039 313999604 331164353

output:

3 4
1 4
5 6
6 7
3 6
3 4
2 3
3 4
6 7
5 6
-1 -1

result:

ok Correct.

Test #5:

score: 5
Accepted
time: 0ms
memory: 1196kb

input:

10
1 1 0 0 0 0 0 1 1 1

output:

1 3
4 5
2 5
6 7
4 7
1 2
2 3
2 3
1 2
6 7
7 8
7 8
-1 -1

result:

ok Correct.

Test #6:

score: 5
Accepted
time: 0ms
memory: 1200kb

input:

10
552474873 603523889 451688250 856980678 746716186 316583031 509750159 895158422 895128023 276991286

output:

2 3
6 7
9 10
8 9
3 8
1 2
2 3
3 4
1 2
2 3
4 5
6 7
7 8
6 7
7 8
9 10
-1 -1

result:

ok Correct.

Test #7:

score: 5
Accepted
time: 5ms
memory: 1308kb

input:

3000
774135042 955379290 425485912 951649655 435211761 517813461 22865164 126834432 859390051 751505...

output:

1 3
4 5
2 4
7 8
10 11
3 8
13 14
14 16
19 20
20 22
15 20
5 16
25 26
28 30
26 28
31 32
34 35
35 36
32 ...

result:

ok Correct.

Test #8:

score: 5
Accepted
time: 4ms
memory: 1324kb

input:

4000
0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 1...

output:

5 6
2 4
9 10
13 14
9 12
2 8
17 18
23 24
21 23
17 21
27 28
26 27
29 30
31 32
30 32
27 31
18 29
2 22
3...

result:

ok Correct.

Test #9:

score: 5
Accepted
time: 3ms
memory: 1324kb

input:

4000
253876655 192406499 33773493 714588720 62247300 512617285 830025704 158991275 146203174 6211898...

output:

1 2
2 3
7 8
6 7
4 6
11 12
10 12
13 14
15 16
14 15
12 14
6 13
17 18
19 20
18 19
21 22
23 24
22 23
20 ...

result:

ok Correct.

Test #10:

score: 5
Accepted
time: 6ms
memory: 1328kb

input:

5000
0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1...

output:

2 3
4 5
3 5
6 7
9 10
8 9
5 8
11 12
12 13
14 15
13 14
16 17
15 17
8 16
21 22
24 25
22 24
26 27
29 30
...

result:

ok Correct.

Test #11:

score: 5
Accepted
time: 8ms
memory: 1324kb

input:

5000
576963277 817862335 430151834 505200145 307373684 896252967 779450344 424741325 188693368 71249...

output:

1 3
4 5
2 4
6 8
7 9
3 7
11 12
12 13
14 15
13 14
16 17
19 20
17 19
15 17
5 16
21 22
22 23
24 25
23 25...

result:

ok Correct.

Test #12:

score: 5
Accepted
time: 11ms
memory: 1328kb

input:

5000
296887 701139 1259018 1624742 1747738 2354948 2616510 2777173 3193517 3454408 3801911 4078104 4...

output:

1 2
2 3
4 5
3 5
6 7
7 8
9 10
8 10
5 10
11 12
12 13
14 15
13 15
16 17
17 18
19 20
18 20
15 20
10 20
2...

result:

ok Correct.

Test #13:

score: 5
Accepted
time: 18ms
memory: 1392kb

input:

10000
1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 ...

output:

1 3
4 5
2 4
6 7
7 8
9 10
8 10
3 9
11 12
12 13
14 15
13 15
16 17
17 18
19 20
18 20
15 20
7 19
21 22
2...

result:

ok Correct.

Test #14:

score: 5
Accepted
time: 37ms
memory: 1656kb

input:

20000
0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 ...

output:

2 4
6 7
6 9
3 6
11 13
12 13
16 17
17 19
12 17
4 13
24 25
22 24
26 27
27 28
28 29
23 29
32 33
36 37
3...

result:

ok Correct.

Test #15:

score: 5
Accepted
time: 54ms
memory: 1784kb

input:

30000
1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 1 ...

output:

1 2
2 3
7 8
6 7
3 6
11 12
10 11
13 14
14 15
11 14
5 12
16 17
17 18
20 21
19 21
24 25
25 26
28 29
26 ...

result:

ok Correct.

Test #16:

score: 5
Accepted
time: 89ms
memory: 2048kb

input:

40000
0 1 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 ...

output:

2 3
4 5
3 5
6 7
7 8
5 6
11 12
12 13
13 14
16 17
15 17
6 16
21 22
22 23
24 25
23 24
26 27
29 30
26 29...

result:

ok Correct.

Test #17:

score: 5
Accepted
time: 116ms
memory: 2304kb

input:

50000
0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 0 ...

output:

2 3
3 5
8 9
9 10
11 13
10 11
4 10
14 15
17 18
14 17
20 22
23 24
21 22
15 20
7 15
26 27
30 31
26 30
3...

result:

ok Correct.

Test #18:

score: 5
Accepted
time: 55ms
memory: 1784kb

input:

30000
23333 23333 23333 23333 23333 23333 23333 23333 23333 23333 23333 23333 23333 23333 23333 2333...

output:

1 2
3 4
2 4
5 6
7 8
6 8
4 8
9 10
11 12
10 12
13 14
14 15
12 15
8 15
16 17
18 19
17 19
20 21
22 23
21...

result:

ok Correct.

Test #19:

score: 5
Accepted
time: 81ms
memory: 2048kb

input:

40000
45713484 162270600 502896796 450460958 129500884 513441781 557737624 340152311 679444775 35445...

output:

1 2
4 5
3 5
6 8
9 10
7 9
5 7
11 12
17 18
19 20
18 19
13 18
7 15
21 22
22 23
23 24
26 27
27 28
28 29
...

result:

ok Correct.

Test #20:

score: 5
Accepted
time: 101ms
memory: 2304kb

input:

50000
455891075 705915927 189674482 578895411 789714247 658466934 483470291 469989305 544838975 2828...

output:

2 3
5 7
3 5
9 10
11 12
10 11
4 10
14 15
17 18
16 18
21 22
23 24
24 25
22 24
18 23
7 21
26 27
27 28
3...

result:

ok Correct.