Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- /**
- 6. Műsorok
- Adott n tévéműsor, amelyeknek ismert a kezdési és befejezési időpontjuk: (k1,b1), (k2,b2),...,(kn,bn).
- Egy család, amelynek egy tévékészüléke van, úgy dönt, hogy a [K,B] időintervallumban (biK, kiB, i=1,n)
- tévézni fog. Mely műsorokat válasszák (lehetnek átfedő műsorok is, amelyeket természetesen más-más kanálisokon
- 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
- (és legalább hány tagú kéne legyen a család) ahhoz, hogy minden műsort megnézhessen legalább egy családtag.
- Megoldás:
- A leghamarabb befejeződő műsort választjuk ki elsőként, hogy a leghosszabb folytonos időszakasz maradjon
- fenn további választásokra.
- A műsorokat növekvő sorrendbe rendezzük a befejezési időpontok szerint. Ebben a sorrendben próbáljuk őket
- műsorra tűzni. Egy v változóban nyilvántartjuk az utolsó programra tűzött műsor befejezési időpontját.
- Ha a soron következő előadás ezt megelőzően kezdődik, kihagyjuk.
- */
- using namespace std;
- struct musor{
- int k,b;
- }a[50];
- void beolvas( musor a[],int &n)
- {
- ifstream f("musorok.be");
- f>>n;
- for(int i=1;i<=n;i++)
- f>>a[i].k>>a[i].b;
- }
- void rendez ( musor a[],int n)
- {
- int jo=1;
- int nn=n;
- do{
- jo=1;
- for(int i=1;i<=nn-1;i++)
- if(a[i].b>a[i+1].b)
- {
- musor x=a[i];
- a[i]=a[i+1];
- a[i+1]=x;
- jo=0;
- }
- nn--;
- }while(jo==0);
- }
- void moho (musor a[], int n, int K, int B)
- {
- int x=K;
- for(int i=1;i<=n;i++)
- if(a[i].k>=K and a[i].b<=B and a[i].k>=x){
- {cout<<a[i].k<<" "<<a[i].b<<endl;
- x=a[i].b;}
- }
- }
- int main()
- {
- int n,K,B;
- beolvas(a,n);
- rendez(a,n);
- cout<<" Olvass be egy idointervallumot > ";
- cin>>K>>B;
- moho(a,n,K,B);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement