ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#170474 | #32. Sort | KevinX | 100 | 589ms | 2304kb | C++ | 1.8kb | 2023-05-03 17:55:35 | 2023-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.