Advertisement
OvidiuF

Untitled

May 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #pragma warning (disable:4996)
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. void citire(int n, int *s, int *f) {
  7. for (int i = 0;i < n;i++) {
  8. printf("Introduceti ora de inceput a cursului %d: ", i + 1);
  9. scanf("%d", &s[i]);
  10. printf("Introduceti ora de sfarsit a cursului %d: ", i + 1);
  11. scanf("%d", &f[i]);
  12. }
  13. }
  14.  
  15. void afis(int n, int *s, int *f) {
  16. for (int i = 0;i < n;i++)
  17. printf("Spetacolul %d incepe la %d se termina la %d\n", i, s[i], f[i]);
  18. }
  19.  
  20. void schimba(int *s, int *f, int i, int j) {
  21. int aux = s[i];
  22. s[i] = s[j];
  23. s[j] = aux;
  24. aux = f[i];
  25. f[i] = f[j];
  26. f[j] = aux;
  27. }
  28.  
  29. void sortare_dupa_ora_de_start(int n, int *s, int *f) {
  30. for (int i = 0;i < n - 1;i++)
  31. for (int j = i + 1;j < n;j++)
  32. if ((s[i] == s[j]) && (f[i] > f[j]))
  33. schimba(s, f, i, j);
  34. else
  35. if (s[i] > s[j])
  36. schimba(s, f, i, j);
  37. }
  38.  
  39. void greedy(int n, int *s, int *f) {
  40. int i = 0;
  41. int *s1, *f1;
  42. s1 = (int *)malloc(sizeof(int)*n);
  43. f1 = (int*)malloc(sizeof(int)*n);
  44. s1[0] = s[0];
  45. f1[0] = f[0];
  46. for (int j = 1;j < n;j++)
  47. if (s[j] >= f[i]) {
  48. i++;
  49. s1[i] = s[j];
  50. f1[i] = f[j];
  51. }
  52. afis(i + 1, s1, f1);
  53. }
  54.  
  55. void main() {
  56. int n, *s, *f;
  57.  
  58. printf("n=");
  59. scanf("%d", &n);
  60. s = (int *)malloc(sizeof(int)*n);
  61. f = (int*)malloc(sizeof(int)*n);
  62. citire(n, s, f);
  63. sortare_dupa_ora_de_start(n, s, f);
  64. afis(n, s, f);
  65. greedy(n, s, f);
  66. _getch();
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement