Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Em. Cerchez 100
- #include <fstream>
- #include <cstring>
- #define NMAX 1002
- using namespace std;
- ifstream fin("venus.in");
- ofstream fout("venus.out");
- char Luni[12][50]={"ianuarie","februarie", "martie", "aprilie" ,"mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"};
- int zl[12]={31,29,31,30,31,30,31,31,30,31,30,31};
- int sz[12];
- struct Comanda
- {short int v, p, nr, tc; };
- ///v = valoare
- ///p=timpul pana la care trebuie predata comanda
- ///nr de ordine al comenzii
- ///tc=-1 daca comanda nu poate fi onorata la timp sau timpul curent de predare altfel
- int n, lg, t;
- Comanda C[NMAX];
- int pmin;
- int L[NMAX];
- int main()
- {int i, zi, ora, k, j, sch;
- char luna[50];
- Comanda aux;
- fin>>n>>t;
- for (i=1; i<12; i++) sz[i]=sz[i-1]+zl[i-1];
- for (i=1; i<=n; i++)
- {
- fin>>C[i].v>>zi>>luna>>ora;
- for (j=0; j<12; j++)
- if (!strcmp(Luni[j],luna)) break;
- C[i].p=(sz[j]+zi-1)*24+ora;
- C[i].nr=i;
- }
- ///sortez descrescator comenzile dupa v
- do
- {sch=0;
- for (i=1; i<n; i++)
- if (C[i].v<C[i+1].v)
- {
- aux=C[i]; C[i]=C[i+1]; C[i+1]=aux;
- sch=1;
- }
- }
- while (sch);
- for (i=1; i<=n && t>C[i].p; i++) C[i].tc=-1;
- if (i<=n)
- {L[1]=i; lg=1; C[i].tc=t;
- for (i++; i<=n; i++)
- {///verific daca pot onora la timp comanda C[i]
- ///parcurg comenzile existente si verific care pot fi amanate
- for (j=lg; j>=1 && C[L[j]].tc+t<=C[L[j]].p && C[L[j]].p>=C[i].p; j--);
- ///putem insera comanda i pe pozitia j+1?
- if (j==0&&C[i].p>=t || C[L[j]].p<=C[i].p && C[L[j]].tc+t<=C[i].p)
- //onorez comanda i
- {
- for (k=lg; k>j; k--) {C[L[k]].tc+=t; L[k+1]=L[k];}
- lg++;
- L[j+1]=i;
- C[i].tc=C[L[j]].tc+t;
- }
- else C[i].tc=-1;
- }
- }
- pmin=0;
- for (i=1; i<=n; i++)
- if (C[i].tc==-1) pmin+=C[i].v;
- fout<<pmin<<'\n';
- for (i=1; i<=lg; i++) fout<<C[L[i]].nr<<' ';
- for (i=1; i<=n; i++)
- if (C[i].tc==-1) fout<<C[i].nr<<' ';
- fout<<'\n';
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement