Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<fstream>
- #include <vector>
- #include <algorithm>
- int numberOfLibraries, books, days;
- std::vector<int> bookScores;
- std::vector<std::pair<int, int>> pickOrder;
- std::vector<std::vector<int>> takenBooks;
- struct Library {
- int numberOfBooks;
- int signupTime;
- int scanPerDay;
- int index;
- std::vector<std::pair<int,int>> availableBooks;
- Library(int n, int s, int d, int i)
- {
- numberOfBooks = n;
- signupTime = s;
- scanPerDay = d;
- index = i;
- }
- bool operator<(Library& rhs)
- {
- return signupTime > rhs.signupTime;
- }
- };
- std::vector<Library> libraries;
- int main()
- {
- std::cin >> books >> numberOfLibraries >> days;
- int numBooks, signup, scans,a;
- for (int i = 0; i < books; i++)
- {
- std::cin >> a;
- bookScores.push_back(a);
- }
- for (int i = 0; i < numberOfLibraries; i++)
- {
- std::cin >> numBooks >> signup >> scans;
- Library b(numBooks, signup, scans, i);
- for (int j = 0; j < numBooks; j++)
- {
- std::cin >> a;
- b.availableBooks.push_back({ bookScores[a],a });
- }
- std::sort(b.availableBooks.begin(), b.availableBooks.end());
- std::reverse(b.availableBooks.begin(), b.availableBooks.end());
- libraries.push_back(b);
- }
- std::sort(libraries.begin(), libraries.end());
- int index = 0,numPicked = 0;
- while (days > 0 && numPicked < numberOfLibraries)
- {
- Library current = libraries[index];
- days -= current.signupTime;
- int canRead = std::min(days * current.scanPerDay,current.numberOfBooks);
- pickOrder.push_back({ current.index,canRead });
- index++;
- numPicked++;
- }
- std::ofstream myfile;
- myfile.open("output.txt");
- myfile << numPicked << '\n';
- for (int i = 0; i < index; i++)
- {
- myfile << pickOrder[i].first << ' ' << pickOrder[i].second << '\n';
- for (int j = 0; j < pickOrder[i].second; j++)
- {
- myfile << libraries[i].availableBooks[j].second << ' ';
- }
- myfile << '\n';
- }
- myfile.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement