fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. void *wmem;
  5. char memarr[96000000];
  6. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  7. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  8. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  9. (*arr)=(T*)(*mem);
  10. (*mem)=((*arr)+x);
  11. }
  12. template<class T1, class T2> void sortA_L(int N, T1 a[], T2 b[], void *mem = wmem){
  13. int i;
  14. pair<T1, T2> *arr;
  15. walloc1d(&arr, N, &mem);
  16. for(i=(0);i<(N);i++){
  17. arr[i].first = a[i];
  18. arr[i].second = b[i];
  19. }
  20. sort(arr, arr+N);
  21. for(i=(0);i<(N);i++){
  22. a[i] = arr[i].first;
  23. b[i] = arr[i].second;
  24. }
  25. }
  26. template<class T1, class T2, class T3> void sortA_L(int N, T1 a[], T2 b[], T3 c[], void *mem = wmem){
  27. int i;
  28. pair<T1, pair<T2, T3> > *arr;
  29. walloc1d(&arr, N, &mem);
  30. for(i=(0);i<(N);i++){
  31. arr[i].first = a[i];
  32. arr[i].second.first = b[i];
  33. arr[i].second.second = c[i];
  34. }
  35. sort(arr, arr+N);
  36. for(i=(0);i<(N);i++){
  37. a[i] = arr[i].first;
  38. b[i] = arr[i].second.first;
  39. c[i] = arr[i].second.second;
  40. }
  41. }
  42. template<class S, class T> inline S chmax(S &a, T b){
  43. if(a<b){
  44. a=b;
  45. }
  46. return a;
  47. }
  48. template<class T> int coordcomp_L(int n, T arr[], int res[] = NULL, void *mem = wmem){
  49. int i;
  50. int k = 0;
  51. pair<T,int> *r;
  52. walloc1d(&r, n, &mem);
  53. for(i=(0);i<(n);i++){
  54. r[i].first = arr[i];
  55. r[i].second = i;
  56. }
  57. sort(r, r+n);
  58. if(res != NULL){
  59. for(i=(0);i<(n);i++){
  60. if(i && r[i].first != r[i-1].first){
  61. k++;
  62. }
  63. res[r[i].second] = k;
  64. }
  65. }
  66. else{
  67. for(i=(0);i<(n);i++){
  68. if(i && r[i].first != r[i-1].first){
  69. k++;
  70. }
  71. arr[r[i].second] = k;
  72. }
  73. }
  74. return k+1;
  75. }
  76. template<class T> int coordcomp_L(int n1, T arr1[], int n2, T arr2[], int res1[] = NULL, int res2[] = NULL, void *mem = wmem){
  77. int i;
  78. int k = 0;
  79. pair<T,int> *r;
  80. walloc1d(&r, n1+n2, &mem);
  81. for(i=(0);i<(n1);i++){
  82. r[i].first = arr1[i];
  83. r[i].second = i;
  84. }
  85. for(i=(0);i<(n2);i++){
  86. r[n1+i].first = arr2[i];
  87. r[n1+i].second = n1+i;
  88. }
  89. sort(r, r+n1+n2);
  90. for(i=(0);i<(n1+n2);i++){
  91. if(i && r[i].first != r[i-1].first){
  92. k++;
  93. }
  94. if(r[i].second < n1){
  95. if(res1!=NULL){
  96. res1[r[i].second] = k;
  97. }
  98. else{
  99. arr1[r[i].second] = k;
  100. }
  101. }
  102. else{
  103. if(res2!=NULL){
  104. res2[r[i].second-n1] = k;
  105. }
  106. else{
  107. arr2[r[i].second-n1] = k;
  108. }
  109. }
  110. }
  111. return k+1;
  112. }
  113. #define main dummy_main
  114. int main(){
  115. wmem = memarr;
  116. return 0;
  117. }
  118. #undef main
  119. int N;
  120. int M;
  121. int A[100000];
  122. int B[100000];
  123. int C[100000];
  124. int dp[200000];
  125. class Solution{
  126. public:
  127. int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit){
  128. int i;
  129. dummy_main();
  130. int k = 0;
  131. N = startTime.size();
  132. for(i=(0);i<(N);i++){
  133. A[i] = startTime[i];
  134. }
  135. for(i=(0);i<(N);i++){
  136. B[i] = endTime[i];
  137. }
  138. for(i=(0);i<(N);i++){
  139. C[i] = profit[i];
  140. }
  141. M =coordcomp_L(N, A, N, B);
  142. sortA_L(N, A, B, C);
  143. for(i=(0);i<(M+1);i++){
  144. dp[i] = 0;
  145. }
  146. for(i=(0);i<(M);i++){
  147. chmax(dp[i+1], dp[i]);
  148. while(k < N && A[k] == i){
  149. chmax(dp[B[k]], dp[i] + C[k]);
  150. k++;
  151. }
  152. }
  153. return dp[M];
  154. }
  155. }
  156. ;
  157. // cLay varsion 20191102-1
  158.  
  159. // --- original code ---
  160. // #define main dummy_main
  161. // {}
  162. // #undef main
  163. //
  164. // int N, M;
  165. // int A[1d5], B[1d5], C[1d5];
  166. // int dp[2d5];
  167. //
  168. // class Solution {
  169. // public:
  170. // int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {
  171. // dummy_main();
  172. // int k = 0;
  173. // N = startTime.size();
  174. // rep(i,N) A[i] = startTime[i];
  175. // rep(i,N) B[i] = endTime[i];
  176. // rep(i,N) C[i] = profit[i];
  177. // M = coordcomp(N, A, N, B);
  178. // sortA(N, A, B, C);
  179. // rep(i,M+1) dp[i] = 0;
  180. // rep(i,M){
  181. // dp[i+1] >?= dp[i];
  182. // while(k < N && A[k] == i) dp[B[k]] >?= dp[i] + C[k], k++;
  183. // }
  184. // return dp[M];
  185. // }
  186. // };
  187.  
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