fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. #define MD (1000000007U)
  5. void *wmem;
  6. char memarr[96000000];
  7. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  8. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  9. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  10. (*arr)=(T*)(*mem);
  11. (*mem)=((*arr)+x);
  12. }
  13. template<class T1> void sortA_L(int N, T1 a[], void *mem = wmem){
  14. sort(a, a+N);
  15. }
  16. template<class T1, class T2> void sortA_L(int N, T1 a[], T2 b[], void *mem = wmem){
  17. int i;
  18. pair<T1, T2> *arr;
  19. walloc1d(&arr, N, &mem);
  20. for(i=(0);i<(N);i++){
  21. arr[i].first = a[i];
  22. arr[i].second = b[i];
  23. }
  24. sort(arr, arr+N);
  25. for(i=(0);i<(N);i++){
  26. a[i] = arr[i].first;
  27. b[i] = arr[i].second;
  28. }
  29. }
  30. template<class S, class T> inline S chmax(S &a, T b){
  31. if(a<b){
  32. a=b;
  33. }
  34. return a;
  35. }
  36. template<class T> struct Heap{
  37. int size;
  38. T *val;
  39. void malloc(const int N){
  40. val = (T*) std::malloc(N*sizeof(T));
  41. size = 0;
  42. }
  43. void walloc(const int N, void **mem = &wmem){
  44. walloc1d(&val, N, mem);
  45. size = 0;
  46. }
  47. void free(){
  48. std::free(val);
  49. }
  50. void init(){
  51. size = 0;
  52. }
  53. void up(){
  54. int n = size - 1;
  55. int m;
  56. while(n){
  57. m = (n-1) / 2;
  58. if(val[m] <= val[n]){
  59. break;
  60. }
  61. swap(val[m], val[n]);
  62. n = m;
  63. }
  64. }
  65. void down(){
  66. int n = 0;
  67. int m;
  68. for(;;){
  69. m=2*n+1;
  70. if(m>=size){
  71. break;
  72. }
  73. if(m+1<size && val[m] > val[m+1]){
  74. m++;
  75. }
  76. if(val[m] >= val[n]){
  77. break;
  78. }
  79. swap(val[m], val[n]);
  80. n = m;
  81. }
  82. }
  83. T top(){
  84. return val[0];
  85. }
  86. T pop(){
  87. T res = val[0];
  88. size--;
  89. if(size > 0){
  90. val[0] = val[size];
  91. down();
  92. }
  93. return res;
  94. }
  95. T push(const T x){
  96. val[size++] = x;
  97. up();
  98. return x;
  99. }
  100. }
  101. ;
  102. #define main dummy_main
  103. int main(){
  104. wmem = memarr;
  105. return 0;
  106. }
  107. #undef main
  108. int s[100000];
  109. int e[100000];
  110. class Solution{
  111. public:
  112. int maxPerformance(int n, vector<int>& speed, vector<int>& efficiency, int k){
  113. int i;
  114. dummy_main();
  115. long long res = 0;
  116. long long sm = 0;
  117. Heap<int> hp;
  118. for(i=(0);i<(n);i++){
  119. s[i] = speed[i];
  120. }
  121. for(i=(0);i<(n);i++){
  122. e[i] = efficiency[i];
  123. }
  124. sortA_L(n,e,s);
  125. hp.malloc(k+1);
  126. for(i=(n)-1;i>=(0);i--){
  127. sm += hp.push(s[i]);
  128. if(hp.size > k){
  129. sm -= hp.pop();
  130. }
  131. chmax(res, sm * e[i]);
  132. }
  133. hp.free();
  134. return res % MD;
  135. }
  136. }
  137. ;
  138. // cLay varsion 20200325-1
  139.  
  140. // --- original code ---
  141. // #define main dummy_main
  142. // {}
  143. // #undef main
  144. //
  145. // int s[1d5], e[1d5];
  146. //
  147. // class Solution {
  148. // public:
  149. // int maxPerformance(int n, vector<int>& speed, vector<int>& efficiency, int k) {
  150. // dummy_main();
  151. //
  152. // ll res = 0, sm = 0;
  153. // Heap<int> hp;
  154. // rep(i,n) s[i] = speed[i];
  155. // rep(i,n) e[i] = efficiency[i];
  156. // sortA(n,e,s);
  157. // hp.malloc(k+1);
  158. //
  159. // rrep(i,n){
  160. // sm += hp.push(s[i]);
  161. // if(hp.size > k) sm -= hp.pop();
  162. // res >?= sm * e[i];
  163. // }
  164. //
  165. // hp.free();
  166. // return res % MD;
  167. // }
  168. // };
  169.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty