Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. struct activitate
  7. {
  8. int start;
  9. int finish;
  10. int k;
  11. };
  12. activitate a[100];
  13. int n,m,s[100];
  14. void Citire()
  15. {
  16. cout<<"nr activitati:";
  17. cin>>n;
  18. cout<<endl;
  19. for(int i=1;i<=n;i++)
  20. {
  21. cout<<"actitivatea nr "<<i<<endl;
  22. cout<<"incepe la ora: ";
  23. cin>>a[i].start;
  24. cout<<"se termina la ora: ";
  25. cin>>a[i].finish;
  26. a[i].k=i;
  27. cout<<endl;
  28. }
  29. }
  30. void schimba(activitate &a,activitate &b)
  31. {
  32. activitate aux;
  33. aux=a;
  34. a=b;
  35. b=aux;
  36. }
  37. void schimba2(int &a,int &b)
  38. {
  39. int aux;
  40. aux=a;
  41. a=b;
  42. b=aux;
  43. }
  44. void divide(int st,int dr,int &m)
  45. {
  46. int i=st;
  47. int j=dr;
  48. int pi=0;
  49. int pj=1;
  50. while(i<j)
  51. {
  52. if(a[i].finish>a[j].finish)
  53. {
  54. schimba(a[i],a[j]);
  55. schimba2(pi,pj);
  56. }
  57. i=i+pi;
  58. j=j-pj;
  59. }
  60. m=i;
  61. }
  62. void qsort(int st,int dr)
  63. {
  64. int m;
  65. if(st<dr)
  66. {
  67. divide(st,dr,m);
  68. qsort(st,m-1);
  69. qsort(m+1,dr);
  70. }
  71. }
  72. void greedy()
  73. {
  74. int j=1;
  75. s[1]=1;
  76. for(int i=2;i<=n;i++)
  77. if(a[i].start>=a[s[j]].finish)
  78. {
  79. j++;
  80. s[j]=i;
  81. }
  82. m=j;
  83. }
  84. void Afiseaza()
  85. {
  86. cout<<"Planificarea activitatilor: "<<endl;
  87. for(int i=1; i<=m; i++)
  88. cout<<"Activitatea "<<a[s[i]].k<<"- de la "<<a[s[i]].start<<" pana la "<<a[s[i]].finish<<endl;
  89. }
  90.  
  91.  
  92.  
  93.  
  94. int main()
  95. {
  96. Citire();
  97. qsort(0,n-1);
  98. greedy();
  99. Afiseaza();
  100. return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement