icatalin

spectacole si cuie

May 30th, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.     int ti,tf;
  7. } spectacol;
  8.  
  9. int cmp(const void *a,const void *b)
  10. {
  11.     spectacol va=*(spectacol*)a;
  12.     spectacol vb=*(spectacol*)b;
  13.  
  14.     if(va.tf == vb.tf)
  15.     {
  16.         return (va.ti-vb.ti);
  17.     }
  18.  
  19.     return (va.tf-vb.tf);
  20. }
  21.  
  22. void greedy(FILE *fout, int n, spectacol *v)
  23. {
  24.     fprintf(fout, "Spectacolele selectate sunt:\n");
  25.     fprintf(fout, "%d %d\n", v[0].ti, v[0].tf);
  26.     spectacol ultspectbun = v[0];
  27.  
  28.     int i, cnt = 1;
  29.     for(i = 1; i < n; i++)
  30.     {
  31.         if(v[i].ti >= ultspectbun.tf)
  32.         {
  33.             cnt++;
  34.             ultspectbun = v[i];
  35.             fprintf(fout, "%d %d\n", v[i].ti, v[i].tf); //pentru cuie afisam doar timpul de terminare si modific denumirile
  36.         }
  37.     }
  38.  
  39.     fprintf(fout, "Au fost selectate %d spectacole.\n", cnt);
  40. }
  41.  
  42. int main()
  43. {   FILE *fin, *fout;
  44.  
  45.     fin = fopen("date.in","r");
  46.     fout = fopen("date.out","w");
  47.  
  48.     int n;
  49.     // printf("Numarul de spectacole este :\n");
  50.     fscanf(fin, "%d%*c", &n);
  51.     spectacol *v = (spectacol*)malloc(n* sizeof(spectacol));
  52.  
  53.     int i;
  54.     // printf("Orele de inceput si de final sunt:\n");
  55.     for(i = 0; i < n; ++i)
  56.     {
  57.         fscanf(fin, "%d %d%*c", &v[i].ti, &v[i].tf);
  58.     }
  59.  
  60.     qsort(v, n, sizeof(spectacol), cmp);
  61.  
  62.     greedy(fout, n, v);
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment