Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include <iostream>
  2. #include<fstream>
  3. #include <vector>
  4. #include <algorithm>
  5. long long numberOfLibraries, books, days;
  6. std::vector<long long> bookScores;
  7. std::vector<std::pair<long long, long long>> pickOrder;
  8. std::vector<std::vector<long long>> takenBooks;
  9. struct Library {
  10. long long numberOfBooks;
  11. long long signupTime;
  12. long long scanPerDay;
  13. long long index;
  14. std::vector<std::pair<long long,long long>> availableBooks;
  15.  
  16. Library(long long n, long long s, long long d, long long i)
  17. {
  18. numberOfBooks = n;
  19. signupTime = s;
  20. scanPerDay = d;
  21. index = i;
  22. }
  23. bool operator<(Library& rhs)
  24. {
  25. return signupTime > rhs.signupTime;
  26. }
  27. };
  28. std::vector<Library> libraries;
  29.  
  30. int main()
  31. {
  32. std::ifstream input;
  33. input.open("input.txt");
  34. input >> books >> numberOfLibraries >> days;
  35. long long numBooks, signup, scans,a;
  36. for (long long i = 0; i < books; i++)
  37. {
  38. input >> a;
  39. bookScores.push_back(a);
  40. }
  41. for (long long i = 0; i < numberOfLibraries; i++)
  42. {
  43. input >> numBooks >> signup >> scans;
  44.  
  45. Library b(numBooks, signup, scans, i);
  46. for (long long j = 0; j < numBooks; j++)
  47. {
  48. input >> a;
  49. b.availableBooks.push_back({ bookScores[a],a });
  50. }
  51. std::sort(b.availableBooks.begin(), b.availableBooks.end());
  52. std::reverse(b.availableBooks.begin(), b.availableBooks.end());
  53. libraries.push_back(b);
  54. }
  55. std::sort(libraries.begin(), libraries.end());
  56.  
  57. long long index = 0,numPicked = 0;
  58. while (days > 0 && numPicked < numberOfLibraries)
  59. {
  60. Library current = libraries[index];
  61. days -= current.signupTime;
  62. long long canRead = std::min(days * current.scanPerDay,current.numberOfBooks-1);
  63. pickOrder.push_back({ current.index,canRead });
  64. index++;
  65. numPicked++;
  66.  
  67. }
  68. std::ofstream myfile;
  69. myfile.open("output2.txt");
  70.  
  71. myfile << numPicked << '\n';
  72. for (long long i = 0; i < index; i++)
  73. {
  74. myfile << pickOrder[i].first << ' ' << pickOrder[i].second << '\n';
  75. for (long long j = 0; j < pickOrder[i].second; j++)
  76. {
  77. myfile << libraries[i].availableBooks[j].second << ' ';
  78. }
  79. myfile << '\n';
  80. }
  81.  
  82. myfile.close();
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement