Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- using namespace std;
- struct library{
- vector<int> books_id;
- int days, per_day, book_scores;
- double score;
- bool used = false;
- };
- int B, L, D;
- vector<int> books;
- vector<library> libraries;
- void read(){
- cin>>B>>L>>D;
- /// Books
- for(int i=0;i<B;i++){
- int x;
- cin>>x;
- books.push_back(x);
- }
- /// Libraries
- for(int i=0;i<L;i++){
- int a, b, c, x;
- cin>>a>>b>>c;
- library d;
- d.per_day = c;
- d.days = b;
- for(int j=0;j<a;j++) {
- cin>>x;
- d.books_id.push_back(x);
- }
- libraries.push_back(d);
- }
- }
- int get_best_library(){
- int maxi_id = 0, maxi = 0;
- for(int i=0;i<L;i++){
- library d = libraries[i];
- if(!d.used){
- d.book_scores = 0;
- int books_count = 0;
- for(int j=0;j<d.books_id.size();j++){
- d.book_scores += books[d.books_id[j]];
- if(d.books_id[j]!=0)
- books_count++;
- }
- d.score = (d.book_scores * d.per_day * books_count)/d.days;
- if(d.score>maxi){
- maxi = d.score;
- maxi_id = i;
- }
- }
- }
- return maxi_id;
- }
- int calc(){
- int current_day = 0;
- int is_signing = 0;
- int target_day = -1;
- int best_lib = -1;
- while(current_day < D)
- {
- if(target_day == curren_day)
- {
- libraries[best_lib].used = true;
- is_signing = 0;
- best_lib = -1;
- }
- if(is_signing == 0)
- {
- best_lib = get_best_library();
- target_day = current_day + libraries[best_lib].days;
- is_signing = 1;
- }
- for(int i = 0; i<L;++i)
- {
- if(libraries[i].used)
- {
- int scanned = 0;
- int size_lib = size(libraries[i].books_id);
- while(scanned < libraries[i].per_day)
- {
- for(int j = 0; j < libraries[i].size_lib; ++j)
- {
- if(books[libraries[i].books_id[j]] != 0)
- {
- books[libraries[i].books_id[j]] = 0;
- scanned++;
- break;
- }
- }
- }
- }
- }
- current_day++;
- }
- }
- int main() {
- freopen("date.in", "r", stdin);
- read();
- cout<<get_best_library();
- calc();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement