Advertisement
a53

venus

a53
May 6th, 2019
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. //Em. Cerchez 100
  2. #include <fstream>
  3. #include <cstring>
  4. #define NMAX 1002
  5.  
  6. using namespace std;
  7. ifstream fin("venus.in");
  8. ofstream fout("venus.out");
  9. char Luni[12][50]={"ianuarie","februarie", "martie", "aprilie" ,"mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"};
  10. int zl[12]={31,29,31,30,31,30,31,31,30,31,30,31};
  11. int sz[12];
  12. struct Comanda
  13. {short int v, p, nr, tc; };
  14. ///v = valoare
  15. ///p=timpul pana la care trebuie predata comanda
  16. ///nr de ordine al comenzii
  17. ///tc=-1 daca comanda nu poate fi onorata la timp sau timpul curent de predare altfel
  18. int n, lg, t;
  19. Comanda C[NMAX];
  20. int pmin;
  21. int L[NMAX];
  22.  
  23. int main()
  24. {int i, zi, ora, k, j, sch;
  25. char luna[50];
  26. Comanda aux;
  27. fin>>n>>t;
  28. for (i=1; i<12; i++) sz[i]=sz[i-1]+zl[i-1];
  29. for (i=1; i<=n; i++)
  30. {
  31. fin>>C[i].v>>zi>>luna>>ora;
  32. for (j=0; j<12; j++)
  33. if (!strcmp(Luni[j],luna)) break;
  34. C[i].p=(sz[j]+zi-1)*24+ora;
  35. C[i].nr=i;
  36. }
  37. ///sortez descrescator comenzile dupa v
  38. do
  39. {sch=0;
  40. for (i=1; i<n; i++)
  41. if (C[i].v<C[i+1].v)
  42. {
  43. aux=C[i]; C[i]=C[i+1]; C[i+1]=aux;
  44. sch=1;
  45. }
  46. }
  47. while (sch);
  48. for (i=1; i<=n && t>C[i].p; i++) C[i].tc=-1;
  49. if (i<=n)
  50. {L[1]=i; lg=1; C[i].tc=t;
  51. for (i++; i<=n; i++)
  52. {///verific daca pot onora la timp comanda C[i]
  53. ///parcurg comenzile existente si verific care pot fi amanate
  54. for (j=lg; j>=1 && C[L[j]].tc+t<=C[L[j]].p && C[L[j]].p>=C[i].p; j--);
  55. ///putem insera comanda i pe pozitia j+1?
  56. if (j==0&&C[i].p>=t || C[L[j]].p<=C[i].p && C[L[j]].tc+t<=C[i].p)
  57. //onorez comanda i
  58. {
  59. for (k=lg; k>j; k--) {C[L[k]].tc+=t; L[k+1]=L[k];}
  60. lg++;
  61. L[j+1]=i;
  62. C[i].tc=C[L[j]].tc+t;
  63. }
  64. else C[i].tc=-1;
  65. }
  66. }
  67. pmin=0;
  68. for (i=1; i<=n; i++)
  69. if (C[i].tc==-1) pmin+=C[i].v;
  70. fout<<pmin<<'\n';
  71. for (i=1; i<=lg; i++) fout<<C[L[i]].nr<<' ';
  72. for (i=1; i<=n; i++)
  73. if (C[i].tc==-1) fout<<C[i].nr<<' ';
  74. fout<<'\n';
  75. fout.close();
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement