| 记录编号 |
434315 |
评测结果 |
AAAAAAAAAAA |
| 题目名称 |
637.排序测试 |
最终得分 |
100 |
| 用户昵称 |
HeHe |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
1.825 s |
| 提交时间 |
2017-08-07 18:16:35 |
内存使用 |
8.44 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
inline char getc(void) {
static char buf[1 << 18], *fs, *ft;
return (fs == ft && (ft = (fs = buf) + fread(buf, 1, 1 << 18, stdin)), fs == ft) ? EOF : *fs++;
}
inline int read(void) {
register int res = 0;
register char tmp = getc();
register bool f = true;
while(!isdigit(tmp) && tmp ^ '-') tmp = getc();
if(tmp == '-') f = false, tmp = getc();
while(isdigit(tmp))
res = ((res + (res << 2)) << 1) + (tmp ^ 0x30),
tmp = getc();
if(f) return res;
return ~res + 1;
}
char ops[1 << 18], *opt = ops, *const opt_end = ops + (1 << 18);
inline void write_all(void) {
fwrite(ops, 1, opt - ops, stdout);
opt = ops; return ;
}
inline void write(int x) {
static char *p = new char[20]();
do{
*(++p) = (x % 10) | 0x30;
x /= 10;
}while(x);
while(*p) {
*(opt++) = *(p--);
if(opt == opt_end) write_all();
}
*(opt++) = ' ';
if(opt == opt_end) write_all();
return ;
}
#define MAXN (2000010)
void qsort(int *l, int *r);
int s[MAXN];
int main() {
#ifndef LOCAL
freopen("sorttest.in", "r", stdin);
freopen("sorttest.out", "w", stdout);
#endif
int N = read();;
srand(N);
int *p = s;
for(int i = 0; i < N; ++i) *(p++) = read();
qsort(s, s + N);
p = s;
for(int i = 0; i < N; ++i) write(*(p++));
write_all();
return 0;
}
void qsort(int *l, int *r) {
int *i = l, *j = r - 1, temp;
int mid = *(l + (rand() % (r - l)));
do{
while(*i < mid) ++i;
while(mid < *j) --j;
if(i <= j) {
temp = *i, *i = *j, *j = temp;
++i, --j;
}
}while(i <= j);
if(l < j) qsort(l, j + 1);
if(i < r - 1) qsort(i, r);
return ;
}