Advertisement
a53

Manager

a53
Mar 14th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. #include <fstream>
  2. #include <algorithm>
  3. #define MAX 100005
  4. using namespace std;
  5. ifstream fin("manager.in");
  6. ofstream fout("manager.out");
  7. struct struct_A{long long int minut; bool esteInc;};
  8. struct struct_B{long long int inc, sf;};
  9.  
  10. bool test_A(struct_A a, struct_A b)
  11. {
  12. if(a.minut != b.minut)
  13. return a.minut<b.minut;
  14. else
  15. if(a.esteInc!=b.esteInc)
  16. return a.esteInc;
  17. else
  18. return false;
  19. }
  20.  
  21. void citeste_A(struct_A sedinta[], long long int &nrSedinte)
  22. {
  23. long long inc,durata,timpPregatire;
  24. fin >> nrSedinte;
  25. for(int i=1;i<=nrSedinte;i++)
  26. {
  27. fin >> inc >> durata >> timpPregatire;
  28. sedinta[i*2-1].minut = inc - timpPregatire; sedinta[i*2-1].esteInc = true;
  29. sedinta[i*2].minut = inc + durata - 1; sedinta[i*2].esteInc = false;
  30. }
  31. }
  32.  
  33. void rezolva_A()
  34. {
  35. struct_A sedinta[MAX * 2];
  36. long long int nrSedinte,nrTure,nrMaxTure;
  37. nrTure = nrMaxTure = 0;
  38.  
  39. citeste_A(sedinta,nrSedinte);
  40. sort(sedinta+1,sedinta+nrSedinte*2+1,test_A);
  41.  
  42. for(int i=1;i<=nrSedinte*2;i++)
  43. if(sedinta[i].esteInc)
  44. {
  45. nrTure++;
  46. if(nrTure>nrMaxTure)
  47. nrMaxTure = nrTure;
  48. }
  49. else
  50. nrTure--;
  51.  
  52. fout<<nrMaxTure;
  53. }
  54.  
  55. bool test_B(struct_B a, struct_B b)
  56. {
  57. if(a.inc != b.inc)
  58. return a.inc < b.inc;
  59. else
  60. return a.sf < b.sf;
  61. }
  62.  
  63. void citeste_B(struct_B sedinta[],long long int &nrSedinte,long long int &timpSedinta)
  64. {
  65. long long int aux, durata, inc, timpPregatire;
  66. fin>>nrSedinte;
  67. for(int i=1;i<=nrSedinte;i++)
  68. {
  69. fin >> inc >> durata >> timpPregatire;
  70. sedinta[i].inc = inc - timpPregatire;
  71. sedinta[i].sf = inc + durata - 1;
  72. }
  73. fin>>timpSedinta; fin>>aux;
  74. timpSedinta+=aux;
  75. }
  76.  
  77. void rezolva_B()
  78. {
  79. long long int nrSedinte, ultimulSf = 0, timpSedinta;
  80. struct_B sedinta[MAX];
  81.  
  82. citeste_B(sedinta,nrSedinte,timpSedinta);
  83. sort(sedinta+1,sedinta+nrSedinte+1,test_B);
  84.  
  85. for(int i=1;i<=nrSedinte;i++)
  86. if(sedinta[i].inc - ultimulSf - 1>=timpSedinta)
  87. {
  88. fout<<ultimulSf + 1;
  89. return;
  90. }
  91. else
  92. if(sedinta[i].sf > ultimulSf) ultimulSf = sedinta[i].sf;
  93. fout << ultimulSf + 1;
  94. }
  95.  
  96. int main()
  97. {
  98. char cerinta;
  99. fin>>cerinta;
  100. if(cerinta == 'a')
  101. rezolva_A();
  102. else
  103. rezolva_B();
  104. return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement