编译器错误,希望各位来解答一下,顺便提供一组数据

SP1805 HISTOGRA - Largest Rectangle in a Histogram

用g++ 4.3.2 就错误 而用gcc或者c++11就没有问题
by a1b3c7d9 @ 2018-12-09 15:37:37


样例奉上 ### input ``` 64 12 42 100 63 136 14 141 8 94 135 18 8 129 64 102 141 82 6 7 115 86 77 70 54 34 16 102 5 127 113 21 140 57 121 105 43 135 149 103 80 134 122 140 15 36 93 58 118 1 118 83 139 45 55 43 79 71 146 137 49 11 8 91 68 82 98 13 17 97 116 149 82 88 140 149 26 135 58 145 38 78 130 27 123 88 70 105 61 118 144 110 129 2 103 47 34 52 60 104 51 79 5 35 17 47 35 96 32 145 143 70 73 123 149 98 113 70 105 25 38 99 135 70 4 141 117 90 95 80 44 146 9 50 32 78 97 119 24 32 114 17 4 89 43 4 37 6 74 143 31 14 92 69 84 148 112 104 89 57 34 133 105 95 85 39 23 85 8 100 117 24 117 121 113 62 27 53 69 101 98 2 18 92 71 102 91 85 56 30 142 142 13 0 87 1 39 111 86 100 113 105 26 80 128 42 45 6 95 114 9 43 18 27 135 142 130 76 77 88 106 122 81 72 122 18 23 63 31 11 65 144 116 92 127 94 134 22 100 131 38 110 76 56 137 61 48 19 40 28 108 48 0 39 70 24 109 145 139 141 6 55 135 122 49 112 67 85 36 69 66 74 81 44 131 121 105 81 140 47 109 98 96 11 39 68 35 149 64 77 140 122 34 27 95 83 92 64 70 78 35 38 3 117 82 36 88 89 19 130 137 31 131 135 42 20 53 130 71 19 57 113 142 143 141 139 76 33 105 48 111 140 86 16 9 18 52 149 107 124 130 94 5 111 79 47 131 35 79 105 106 38 68 98 31 111 139 9 144 94 57 8 137 143 24 146 11 129 146 21 5 28 17 10 139 149 109 22 34 39 127 140 129 98 141 63 59 130 72 54 127 32 114 16 25 40 12 89 71 60 110 76 140 29 86 129 28 98 2 114 137 31 105 18 129 148 81 91 30 56 47 7 88 11 23 113 103 88 104 25 50 116 101 41 146 90 72 24 38 126 41 77 8 146 95 39 46 79 130 76 135 27 136 73 90 61 88 44 149 43 69 102 61 72 45 57 64 117 134 102 94 25 81 4 73 79 95 119 8 76 97 45 5 83 20 96 145 108 42 46 53 111 50 115 85 95 74 0 63 110 4 59 37 138 63 110 67 8 131 127 136 131 22 142 116 42 140 111 52 32 60 8 45 110 123 32 108 99 84 21 60 141 132 149 129 45 12 98 105 143 75 92 26 149 136 143 93 28 6 145 112 118 3 59 79 28 91 89 30 26 12 142 69 144 141 48 39 3 146 46 49 123 138 75 122 26 120 65 54 127 112 16 95 18 75 76 98 69 15 128 147 79 22 66 73 14 114 14 69 12 61 20 135 49 148 107 128 118 74 32 147 36 101 145 106 26 73 55 147 41 85 144 120 108 60 44 24 76 58 145 140 119 16 125 71 66 134 49 34 110 133 84 49 84 79 5 13 52 112 10 93 48 5 64 58 117 108 134 44 68 129 34 90 47 62 11 113 98 112 148 59 147 134 108 82 63 15 147 115 128 7 111 78 64 25 136 32 35 120 128 55 1 64 95 49 126 8 12 127 22 62 36 20 46 46 4 11 61 1 127 91 8 140 19 73 67 57 7 102 79 135 107 133 49 105 32 78 113 96 55 136 61 143 58 9 39 62 21 2 63 50 94 123 40 15 98 57 125 105 111 54 90 120 37 42 75 121 120 91 120 25 129 31 70 37 40 109 99 113 13 64 13 107 37 105 25 136 62 0 143 75 106 136 46 46 28 121 69 50 114 39 127 93 122 47 130 65 58 131 28 71 45 94 81 83 49 106 121 14 8 16 89 16 2 135 114 82 9 34 132 123 125 109 67 0 58 99 65 116 81 145 38 126 141 119 111 93 127 134 107 37 1 98 53 3 84 70 86 145 6 120 20 131 132 87 33 40 89 0 59 20 146 97 48 39 118 10 132 147 144 141 34 47 90 139 51 76 111 39 71 117 9 91 99 43 81 34 84 70 35 143 92 83 142 140 122 12 0 7 9 47 148 95 146 88 136 99 14 98 138 137 117 50 131 66 93 114 3 79 134 38 124 76 121 116 118 145 30 21 2 39 120 1 36 116 141 75 66 6 75 106 45 42 6 26 11 2 140 14 81 26 52 56 4 75 74 123 70 105 96 73 46 16 74 135 132 65 112 100 123 37 57 71 79 115 97 90 117 140 104 101 68 58 59 125 133 133 0 54 140 46 29 89 62 5 126 96 122 88 47 96 125 6 17 54 121 16 47 89 58 53 40 29 14 1 4 147 36 4 103 27 102 34 18 66 39 144 12 12 82 111 10 109 117 79 13 89 147 112 80 56 68 120 137 82 23 43 131 59 99 137 86 51 21 6 117 61 0 31 125 134 143 135 93 110 64 9 49 113 121 129 71 91 1 58 23 24 101 5 136 50 142 72 3 13 131 120 126 131 2 3 18 47 138 111 7 104 22 109 68 46 140 41 137 44 100 11 120 103 16 106 4 60 81 7 125 62 30 54 95 84 7 113 131 146 127 138 2 149 149 122 45 140 14 33 86 16 44 56 119 112 13 25 74 94 85 49 58 17 53 3 101 61 117 82 109 94 122 13 145 24 38 41 66 104 74 2 120 20 58 141 34 123 67 108 119 4 7 27 21 61 31 122 24 50 106 35 46 78 48 41 102 86 134 70 40 58 72 62 130 131 54 14 104 123 122 126 127 130 3 148 93 86 120 19 38 128 54 84 56 4 28 61 91 12 131 33 123 106 96 103 87 52 118 93 25 142 69 2 122 125 0 ``` output ``` 560 700 684 792 570 414 817 576 590 512 700 744 528 912 558 565 630 ```
by a1b3c7d9 @ 2018-12-09 15:38:53


``` #include <iostream> #include <cstdio> #define il inline #define ri register #define ll long long #define max(a,b) a>b?a:b #define int ll using namespace std; int array[3][100001]; il void read(int&); template<class free> void pen(free x){if(x>9)pen(x/10);putchar(x%10+'0');} main(){ int n(1); ri int i,j,h;ri ll k,ans; while(read(n),n){ h=ans=0; for(i=1;i<=n;++i){ read(j); if(j<array[0][h]){ while(array[0][h]>j){ k=(i-array[1][h])*array[0][h]; ans=max(k,ans); --h; } array[1][h]=array[2][h++]+1; array[0][h]=j,array[2][h]=i; } else array[1][++h]=i,array[0][h]=j,array[2][h]=i; } while(h){ k=(i-array[1][h])*array[0][h]; ans=max(k,ans); --h; }pen(ans),putchar('\n'); } return 0; } il void read(int &x){ x=0;char c(getchar());while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar(); } ```
by a1b3c7d9 @ 2018-12-09 15:41:44


你用了啥特性吧?
by Jeanne_Alter @ 2018-12-09 15:52:29


|