Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define Gang struct gang
- struct gang {
- int time, pocket, size;
- };
- int max(int a, int b) {
- return (a > b) ? a : b;
- }
- void sort(Gang* a, int n) {
- for (int i = n - 1; i >= 0; i--) {
- for (int j = 0; j < i; j++) {
- if (a[j].time > a[j+1].time) {
- Gang med = a[j];
- a[j] = a[j + 1];
- a[j + 1] = med;
- }
- }
- }
- }
- int main() {
- FILE *in, *out;
- in = fopen("input.txt", "r");
- out = fopen("output.txt", "w");
- int N, i, last, prev;
- fscanf(in, "%d %*d %*d", &N);
- Gang *a = (Gang*)malloc(N * sizeof(Gang));
- for (i = 0; i < N; i++)
- fscanf(in, "%d", &a[i].time);
- for (i = 0; i < N; i++)
- fscanf(in, "%d", &a[i].pocket);
- for (i = 0; i < N; i++)
- fscanf(in, "%d", &a[i].size);
- sort(a, N);
- int *maxEarn = (int*)calloc(N, sizeof(int));
- for(last = 0; last < N; last++) {
- if (a[last].size > a[last].time)
- continue;
- maxEarn[last] = a[last].pocket;
- for (prev = 0; prev < last; prev++) {
- if (fabs(a[prev].size - a[last].size) > a[last].time - a[prev].time)
- continue;
- maxEarn[last] = max(maxEarn[last], maxEarn[prev] + a[last].pocket);
- }
- }
- int Max = 0;
- for(i = 0; i < N; i++)
- Max = max(Max, maxEarn[i]);
- fprintf(out, "%d", Max);
- free(a);
- free(maxEarn);
- fclose(in);
- fclose(out);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement