Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Problema programarii spectacolelor
- Intr-o sala de spectacol trebuie planificate n spectacole intr-o zi. Pentru fiecare spectacol se cunosc ora de inceput si ora de terminare (numere intregi).
- Sa se planifice un numar maxim de spectacole astfel inct sa nu fie doua spectacole care sa se suprapuna.
- Exemplu:
- spectacole.in
- 7
- 2 4
- 8 11
- 5 6
- 5 8
- 3 7
- 7 8
- 9 12
- spectacole.out:
- 2,4 5,6 7,8 9,12
- */
- #include<fstream>
- using namespace std;
- ifstream fin("spectacole.in");
- ofstream fout("spectacole.out");
- struct spectacol {
- int start,sfarsit;
- };
- void citire(int n, spectacol a[]) {
- fin>>n;
- for(int i=1; i<=n; i++)
- fin>>a[i].start>>a[i].sfarsit;
- }
- void ordonare(int n, spectacol a[]) {///ordonarea se face dupa sfarsitul spectacolelor
- int i,j;
- spectacol aux;
- for(i=1; i<n; i++)
- for(j=i+1; j<=n; j++)
- if(a[i].sfarsit>a[j].sfarsit) {
- aux=a[i];
- a[i]=a[j];
- a[j]=aux;
- }
- }
- void afisare(int n, spectacol a[]) {
- for(int i=1; i<=n; i++)
- fout<<a[i].start<<","<<a[i].sfarsit<<endl;
- }
- void greedy(int n, spectacol a[]) {
- spectacol solutie[100];
- int i,k;
- k=1;
- solutie[1]=a[1];
- for(i=2; i<=n; i++)
- if(solutie[k].sfarsit<a[i].start)
- solutie[++k]=a[i];
- afisare(k,solutie);
- }
- int main() {
- int n;
- spectacol a[100];
- citire(n,a);
- ordonare(n,a);
- greedy(n,a);
- fin.close();
- fout.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement