Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct activitate
- {
- int start;
- int finish;
- int k;
- };
- activitate a[100];
- int n,m,s[100];
- void Citire()
- {
- cout<<"nr activitati:";
- cin>>n;
- cout<<endl;
- for(int i=1;i<=n;i++)
- {
- cout<<"actitivatea nr "<<i<<endl;
- cout<<"incepe la ora: ";
- cin>>a[i].start;
- cout<<"se termina la ora: ";
- cin>>a[i].finish;
- a[i].k=i;
- cout<<endl;
- }
- }
- void schimba(activitate &a,activitate &b)
- {
- activitate aux;
- aux=a;
- a=b;
- b=aux;
- }
- void schimba2(int &a,int &b)
- {
- int aux;
- aux=a;
- a=b;
- b=aux;
- }
- void divide(int st,int dr,int &m)
- {
- int i=st;
- int j=dr;
- int pi=0;
- int pj=1;
- while(i<j)
- {
- if(a[i].finish>a[j].finish)
- {
- schimba(a[i],a[j]);
- schimba2(pi,pj);
- }
- i=i+pi;
- j=j-pj;
- }
- m=i;
- }
- void qsort(int st,int dr)
- {
- int m;
- if(st<dr)
- {
- divide(st,dr,m);
- qsort(st,m-1);
- qsort(m+1,dr);
- }
- }
- void greedy()
- {
- int j=1;
- s[1]=1;
- for(int i=2;i<=n;i++)
- if(a[i].start>=a[s[j]].finish)
- {
- j++;
- s[j]=i;
- }
- m=j;
- }
- void Afiseaza()
- {
- cout<<"Planificarea activitatilor: "<<endl;
- for(int i=1; i<=m; i++)
- cout<<"Activitatea "<<a[s[i]].k<<"- de la "<<a[s[i]].start<<" pana la "<<a[s[i]].finish<<endl;
- }
- int main()
- {
- Citire();
- qsort(0,n-1);
- greedy();
- Afiseaza();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement