Advertisement
GerexD

greedy-6

Feb 15th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. /**
  4.  
  5. 6. Műsorok
  6. Adott n tévéműsor, amelyeknek ismert a kezdési és befejezési időpontjuk: (k1,b1), (k2,b2),...,(kn,bn).
  7. Egy család, amelynek egy tévékészüléke van, úgy dönt, hogy a [K,B] időintervallumban (biK, kiB, i=1,n)
  8. tévézni fog. Mely műsorokat válasszák (lehetnek átfedő műsorok is, amelyeket természetesen más-más kanálisokon
  9. közvetítenek), ha azt szeretnék, hogy a legtöbb műsort lássák. Legkevesebb hány tévékészülékre volna szükségük
  10. (és legalább hány tagú kéne legyen a család) ahhoz, hogy minden műsort megnézhessen legalább egy családtag.
  11. Megoldás:
  12. A leghamarabb befejeződő műsort választjuk ki elsőként, hogy a leghosszabb folytonos időszakasz maradjon
  13. fenn további választásokra.
  14. A műsorokat növekvő sorrendbe rendezzük a befejezési időpontok szerint. Ebben a sorrendben próbáljuk őket
  15. műsorra tűzni. Egy v változóban nyilvántartjuk az utolsó programra tűzött műsor befejezési időpontját.
  16. Ha a soron következő előadás ezt megelőzően kezdődik, kihagyjuk.
  17.  
  18. */
  19.  
  20. using namespace std;
  21. struct musor{
  22. int k,b;
  23.  
  24. }a[50];
  25. void beolvas( musor a[],int &n)
  26. {
  27. ifstream f("musorok.be");
  28. f>>n;
  29. for(int i=1;i<=n;i++)
  30. f>>a[i].k>>a[i].b;
  31. }
  32. void rendez ( musor a[],int n)
  33. {
  34. int jo=1;
  35. int nn=n;
  36. do{
  37. jo=1;
  38. for(int i=1;i<=nn-1;i++)
  39. if(a[i].b>a[i+1].b)
  40. {
  41. musor x=a[i];
  42. a[i]=a[i+1];
  43. a[i+1]=x;
  44. jo=0;
  45. }
  46. nn--;
  47. }while(jo==0);
  48. }
  49. void moho (musor a[], int n, int K, int B)
  50. {
  51. int x=K;
  52. for(int i=1;i<=n;i++)
  53. if(a[i].k>=K and a[i].b<=B and a[i].k>=x){
  54. {cout<<a[i].k<<" "<<a[i].b<<endl;
  55. x=a[i].b;}
  56.  
  57. }
  58. }
  59. int main()
  60. {
  61. int n,K,B;
  62. beolvas(a,n);
  63. rendez(a,n);
  64. cout<<" Olvass be egy idointervallumot > ";
  65. cin>>K>>B;
  66. moho(a,n,K,B);
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement