Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <random>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. mt19937 randik;
  11.  
  12. const int MAX = 1e5;
  13.  
  14. int used[MAX];
  15.  
  16. long long count_of_libraries, books, scan_days;
  17.  
  18. int knigi[MAX];
  19.  
  20. vector <int> order;
  21.  
  22. struct lib{
  23. int lib_books;
  24. vector <long long> books;
  25. int signup;
  26. int ship_days;
  27. int how_take;
  28. vector <long long> taken_books;
  29. };
  30.  
  31. bool comp(long long &a, long long &b){
  32. return (knigi[a] >= knigi[b]);
  33. }
  34.  
  35. int scanned_book[MAX];
  36.  
  37. int main() {
  38. freopen("input.txt.txt","r",stdin);
  39. freopen("output.txt","w",stdout);
  40. ios::sync_with_stdio(false);
  41. cin.tie(0);
  42. cout.tie(0);
  43. cin >> books >> count_of_libraries >> scan_days;
  44. lib libraries[count_of_libraries];
  45. for (int i = 0; i < books; i++){
  46. cin >> knigi[i];
  47. }
  48. for (int i = 0; i < count_of_libraries; i++){
  49. cin >> libraries[i].lib_books >> libraries[i].signup >> libraries[i].ship_days;
  50. for (int j = 0; j < libraries[i].lib_books; j++) {
  51. long long kek;
  52. cin >> kek;
  53. libraries[i].books.push_back(kek);
  54. }
  55. }
  56. for (int i = 0; i < count_of_libraries; i++){
  57. sort(libraries[i].books.begin(),libraries[i].books.end(),comp);
  58. // for (auto e : libraries[i].books)
  59. // cout << knigi[e] << " ";
  60. }
  61.  
  62. long long time = scan_days;
  63. int counter = 0;
  64. while (time > 0 && counter < count_of_libraries){
  65. long long random_lib = randik() % count_of_libraries;
  66. while (used[random_lib])
  67. random_lib= randik() % count_of_libraries;
  68. used[random_lib] = 1;
  69. order.push_back(random_lib);
  70. int items = (time - libraries[random_lib].signup) * libraries[random_lib].ship_days;
  71. libraries[random_lib].how_take = min(items, (int)libraries[random_lib].books.size());
  72. for (int i = 0; i < libraries[random_lib].how_take; i++){
  73. libraries[random_lib].taken_books.push_back(libraries[random_lib].books[i]);
  74. }
  75. time -= libraries[random_lib].signup;
  76. counter++;
  77. }
  78.  
  79.  
  80. cout << counter << "\n";
  81. for (int i = 0; i < counter;i++){
  82. cout << order[i] << " " << libraries[order[i]].taken_books.size() << "\n";
  83. for (auto &e : libraries[order[i]].taken_books)
  84. cout << e << " ";
  85. cout << "\n";
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement