fork download
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC optimize("unroll-loops")
  3. #pragma GCC optimize("inline")
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. void*wmem;
  7. char memarr[96000000];
  8. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  9. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  10. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  11. (*arr)=(T*)(*mem);
  12. (*mem)=((*arr)+x);
  13. }
  14. template<class T> inline void walloc1d(T **arr, int x1, int x2, void **mem = &wmem){
  15. walloc1d(arr, x2-x1, mem);
  16. (*arr) -= x1;
  17. }
  18. template<class T1> void sortA_L(int N, T1 a[], void *mem = wmem){
  19. sort(a, a+N);
  20. }
  21. template<class T1, class T2> void sortA_L(int N, T1 a[], T2 b[], void *mem = wmem){
  22. int i;
  23. pair<T1, T2>*arr;
  24. walloc1d(&arr, N, &mem);
  25. for(i=(0);i<(N);i++){
  26. arr[i].first = a[i];
  27. arr[i].second = b[i];
  28. }
  29. sort(arr, arr+N);
  30. for(i=(0);i<(N);i++){
  31. a[i] = arr[i].first;
  32. b[i] = arr[i].second;
  33. }
  34. }
  35. template<class T> inline T popFirst(multiset<T> &a){
  36. T res = *(a.begin());
  37. a.erase(a.begin());
  38. return res;
  39. }
  40. template<class T> inline T getFirst(multiset<T> &a){
  41. return *(a.begin());
  42. }
  43. template<class T> inline T popFirst(set<T> &a){
  44. T res = *(a.begin());
  45. a.erase(a.begin());
  46. return res;
  47. }
  48. template<class T> inline T getFirst(set<T> &a){
  49. return *(a.begin());
  50. }
  51. template<class S, class T> inline S chmax(S &a, T b){
  52. if(a<b){
  53. a=b;
  54. }
  55. return a;
  56. }
  57. #define main dummy_main
  58. int main(){
  59. wmem = memarr;
  60. return 0;
  61. }
  62. #undef main
  63. int N;
  64. int w[200000];
  65. int ind[200000];
  66. class Solution{
  67. public:
  68. vector<int> assignTasks(vector<int>& servers, vector<int>& tasks){
  69. int i, q;
  70. dummy_main();
  71. int t = 0;
  72. int k;
  73. vector<int> res;
  74. set<int> av;
  75. set<pair<int,int>> chk;
  76. N = servers.size();
  77. for(i=(0);i<(N);i++){
  78. w[i] = servers[i];
  79. ind[i] = i;
  80. }
  81. sortA_L(N,w,ind);
  82. for(i=(0);i<(N);i++){
  83. av.insert(i);
  84. }
  85. for(q=(0);q<(tasks.size());q++){
  86. chmax(t, q);
  87. while(chk.size() && getFirst(chk).first <= t){
  88. av.insert(popFirst(chk).second);
  89. }
  90. if(av.size()==0){
  91. t = getFirst(chk).first;
  92. q--;
  93. continue;
  94. }
  95. k = popFirst(av);
  96. res.push_back(ind[k]);
  97. chk.insert({t+tasks[q], k});
  98. }
  99. return res;
  100. }
  101. }
  102. ;
  103. // cLay version 20210607-1
  104.  
  105. // --- original code ---
  106. // #define main dummy_main
  107. // {}
  108. // #undef main
  109. //
  110. // int N, w[2d5], ind[2d5];
  111. //
  112. // class Solution {
  113. // public:
  114. // vector<int> assignTasks(vector<int>& servers, vector<int>& tasks) {
  115. // dummy_main();
  116. //
  117. // int t = 0, k;
  118. // VI res;
  119. // set<int> av;
  120. // set<pair<int,int>> chk;
  121. //
  122. // N = servers.size();
  123. // rep(i,N) w[i] = servers[i], ind[i] = i;
  124. // sortA(N,w,ind);
  125. // rep(i,N) av.insert(i);
  126. //
  127. // rep(q, tasks.size()){
  128. // t >?= q;
  129. // while(chk.size() && getFirst(chk).first <= t){
  130. // av.insert(popFirst(chk).second);
  131. // }
  132. // if(av.size()==0) t = getFirst(chk).first, q--, continue;
  133. // k = popFirst(av);
  134. // res.push_back(ind[k]);
  135. // chk.insert({t+tasks[q], k});
  136. // }
  137. //
  138. // return res;
  139. // }
  140. // };
  141.  
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