Advertisement
icatalin

U2

May 30th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4.  
  5. int t[1001], r[1001], t1[1001], t2[1001];
  6.  
  7. int minim(int a, int b)
  8. {
  9.     if(a < b) return a;
  10.     return b;
  11. }
  12.  
  13. void afisare(int k)
  14. {
  15.     if(k>=1)
  16.         if(t1[k]<t2[k])
  17.         {
  18.             afisare(k-1);
  19.             printf("%d\n", k);
  20.         }
  21.         else
  22.         {
  23.             afisare(k-2);
  24.             printf("%d + %d\n", k-1, k);
  25.         }
  26. }
  27.  
  28. int main()
  29. {
  30.     int i, n;
  31.  
  32.     FILE *f = fopen("concert.txt", "r");
  33.  
  34.     fscanf(f, "%d", &n);
  35.  
  36.     for(i = 1; i <= n; i++)
  37.         fscanf(f, "%d", &t[i]);
  38.  
  39.     for(i = 1; i < n; i++)
  40.         fscanf(f, "%d", &r[i]);
  41.  
  42.     fclose(f);
  43.  
  44.     t1[1] = t[1];
  45.     t1[2] = t[1]+t[2];
  46.  
  47.     t2[1] = INT_MAX;
  48.     t2[2] = r[1];
  49.  
  50.     for(i = 3; i <= n; i++)
  51.     {
  52.         t1[i] = t[i] + minim(t1[i-1] , t2[i-1]);
  53.         t2[i] = r[i-1] + minim(t1[i-2] , t2[i-2]);
  54.     }
  55.  
  56.     printf("Timpul minim de servire: %d\n", minim(t1[n] , t2[n]));
  57.  
  58.     printf("Modalitatea de cuplare a persoanelor la coada:\n");
  59.     afisare(n);
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement