Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #define Gang struct gang
  5.  
  6. struct gang {
  7. int time, pocket, size;
  8. };
  9.  
  10. int max(int a, int b) {
  11. return (a > b) ? a : b;
  12. }
  13.  
  14. void sort(Gang* a, int n) {
  15. for (int i = n - 1; i >= 0; i--) {
  16. for (int j = 0; j < i; j++) {
  17. if (a[j].time > a[j+1].time) {
  18. Gang med = a[j];
  19. a[j] = a[j + 1];
  20. a[j + 1] = med;
  21. }
  22. }
  23. }
  24. }
  25.  
  26. int main() {
  27. FILE *in, *out;
  28. in = fopen("input.txt", "r");
  29. out = fopen("output.txt", "w");
  30.  
  31. int N, i, last, prev;
  32. fscanf(in, "%d %*d %*d", &N);
  33.  
  34. Gang *a = (Gang*)malloc(N * sizeof(Gang));
  35.  
  36. for (i = 0; i < N; i++)
  37. fscanf(in, "%d", &a[i].time);
  38. for (i = 0; i < N; i++)
  39. fscanf(in, "%d", &a[i].pocket);
  40. for (i = 0; i < N; i++)
  41. fscanf(in, "%d", &a[i].size);
  42.  
  43. sort(a, N);
  44.  
  45. int *maxEarn = (int*)calloc(N, sizeof(int));
  46.  
  47. for(last = 0; last < N; last++) {
  48. if (a[last].size > a[last].time)
  49. continue;
  50. maxEarn[last] = a[last].pocket;
  51. for (prev = 0; prev < last; prev++) {
  52. if (fabs(a[prev].size - a[last].size) > a[last].time - a[prev].time)
  53. continue;
  54. maxEarn[last] = max(maxEarn[last], maxEarn[prev] + a[last].pocket);
  55. }
  56. }
  57.  
  58. int Max = 0;
  59. for(i = 0; i < N; i++)
  60. Max = max(Max, maxEarn[i]);
  61.  
  62. fprintf(out, "%d", Max);
  63.  
  64. free(a);
  65. free(maxEarn);
  66. fclose(in);
  67. fclose(out);
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement