记录编号 398360 评测结果 AAAAAAAAAAE
题目名称 排序测试 最终得分 90
用户昵称 Gravatarsxysxy 是否通过 未通过
代码语言 C++ 运行时间 1.073 s
提交时间 2017-04-22 08:15:18 内存使用 47.81 MiB
显示代码纯文本
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cstdarg>
  4. #include <cstdlib>
  5. #include <algorithm>
  6. #include <list>
  7. #include <queue>
  8. #include <vector>
  9. #include <cctype>
  10. using namespace std;
  11. const int MAXN = 2000100;
  12. namespace IO{
  13. char buf[1<<20], *fs, *ft;
  14. inline char readc(){
  15. return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<20,stdin)),fs==ft)?0:*fs++;
  16. }
  17. template<typename T>
  18. inline void splay(T &r){
  19. char c;
  20. while((c = readc())){
  21. if(c >= '0' && c <= '9'){
  22. r = c^0x30; break;
  23. }
  24. }while(isdigit(c = readc()))r = r*10+(c^0x30);
  25. }
  26. char opt[1<<24], *op = opt;
  27. char tmp[14];
  28. inline void access(unsigned x){
  29. if(!x){
  30. *op = '0';
  31. *(op+1) = ' ';
  32. op += 2;
  33. return;
  34. }
  35. char *p = tmp;
  36. while(x){
  37. int k = x%10;
  38. x /= 10;
  39. *(++p) = k|0x30;
  40. }
  41. while(*p)*op++ = *p--;
  42. *op++ = ' ';
  43. }
  44. inline void makeroot(){
  45. fwrite(opt, op-opt-1, 1, stdout);
  46. }
  47. }using IO::splay; using IO::access; using IO::makeroot;
  48. unsigned a[MAXN], c[MAXN*3];
  49. unsigned minm[2] = {0, MAXN*3}, maxm[2] = {0, 0};
  50. int main(){
  51. freopen("sorttest.in", "r", stdin);
  52. freopen("sorttest.out", "w", stdout);
  53. unsigned n; splay(n);
  54. unsigned rem = n%4;
  55. unsigned lim = n-rem;
  56. for(register unsigned *pa = a; pa < a+lim; pa += 4){
  57. splay(*(pa)); splay(*(pa+1)); splay(*(pa+2)); splay(*(pa+3));
  58. maxm[*pa > *(maxm+1)] = *pa; minm[*pa < *(minm+1)] = *pa;
  59. maxm[*(pa+1) > *(maxm+1)] = *(pa+1); minm[*(pa+1) < *(minm+1)] = *(pa+1);
  60. maxm[*(pa+2) > *(maxm+1)] = *(pa+2); minm[*(pa+2) < *(minm+1)] = *(pa+2);
  61. maxm[*(pa+3) > *(maxm+1)] = *(pa+3); minm[*(pa+3) < *(minm+1)] = *(pa+3);
  62. c[*pa]++, c[*(pa+1)]++, c[*(pa+2)]++, c[*(pa+3)]++;
  63. }
  64. for(register unsigned *pa = a+lim; pa < a+n; pa++){
  65. splay(*(pa));
  66. maxm[*pa > *(maxm+1)] = *pa; minm[*pa < *(minm+1)] = *pa;
  67. c[*pa]++;
  68. }
  69. maxm[0] = maxm[1];
  70. for(register unsigned f = minm[1]; f <= *maxm; f++)
  71. while(c[f]--)access(f);
  72. makeroot();
  73. return 0;
  74. }