Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<fstream>
- #include <vector>
- #include <algorithm>
- long long numberOfLibraries, books, days;
- std::vector<long long> bookScores;
- std::vector<std::pair<long long, long long>> pickOrder;
- std::vector<std::vector<long long>> takenBooks;
- struct Library {
- long long numberOfBooks;
- long long signupTime;
- long long scanPerDay;
- long long index;
- std::vector<std::pair<long long,long long>> availableBooks;
- Library(long long n, long long s, long long d, long long i)
- {
- numberOfBooks = n;
- signupTime = s;
- scanPerDay = d;
- index = i;
- }
- bool operator<(Library& rhs)
- {
- return signupTime > rhs.signupTime;
- }
- };
- std::vector<Library> libraries;
- int main()
- {
- std::ifstream input;
- input.open("input.txt");
- input >> books >> numberOfLibraries >> days;
- long long numBooks, signup, scans,a;
- for (long long i = 0; i < books; i++)
- {
- input >> a;
- bookScores.push_back(a);
- }
- for (long long i = 0; i < numberOfLibraries; i++)
- {
- input >> numBooks >> signup >> scans;
- Library b(numBooks, signup, scans, i);
- for (long long j = 0; j < numBooks; j++)
- {
- input >> 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());
- long long index = 0,numPicked = 0;
- while (days > 0 && numPicked < numberOfLibraries)
- {
- Library current = libraries[index];
- days -= current.signupTime;
- long long canRead = std::min(days * current.scanPerDay,current.numberOfBooks-1);
- pickOrder.push_back({ current.index,canRead });
- index++;
- numPicked++;
- }
- std::ofstream myfile;
- myfile.open("output2.txt");
- myfile << numPicked << '\n';
- for (long long i = 0; i < index; i++)
- {
- myfile << pickOrder[i].first << ' ' << pickOrder[i].second << '\n';
- for (long long 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