Advertisement
Ali-ElMasry

Untitled

Feb 20th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. typedef pair<ll, ll> pll;
  7. typedef pair<int, int> pii;
  8.  
  9. #define endl "\n"
  10.  
  11. const ll INF = 1e15;
  12. const int MOD = 1e9 + 7;
  13. const double EPS = 1e-9;
  14. const double PI = acos(-1.0);
  15.  
  16. mt19937 rng((int) chrono::steady_clock::now().time_since_epoch().count());
  17.  
  18. const int N = 1e5 + 5;
  19.  
  20. vector<int> G[N];
  21. ll b, l, d, c[N], n[N], t[N], m[N];
  22.  
  23. bool vis[N];
  24.  
  25. int main() {
  26.     ios::sync_with_stdio(false);
  27.     cin.tie(NULL), cout.tie(NULL);
  28.  
  29.     cin >> b >> l >> d;
  30.  
  31.     for (int i = 0; i < b; ++i)
  32.         cin >> c[i];
  33.  
  34.     for (int i = 0; i < l; ++i) {
  35.         cin >> n[i] >> t[i] >> m[i];
  36.         G[i].resize(n[i]);
  37.         for (int j = 0; j < n[i]; ++j)
  38.             cin >> G[i][j];
  39.  
  40.     }
  41.  
  42.     vector<int> lib;
  43.     for (int i = 0; i < l; ++i)
  44.         lib.push_back(i);
  45.  
  46.  
  47.     sort(lib.begin(), lib.end(), [&] (int x, int y) {
  48.             return t[x] < t[y];
  49.             });
  50.  
  51.     vector<vector<int>> ans;
  52.  
  53.     int cnt = 0;
  54.     int cur = 0;
  55.     for (int i = 0; i < l; ++i) {
  56.         int idx = lib[i];
  57.         cur += t[idx];
  58.         if (cur > d)
  59.             break;
  60.  
  61.         ans.push_back(vector<int>());
  62.  
  63.         sort(G[idx].begin(), G[idx].end(), [&] (int i, int j) {
  64.                 return c[i] > c[j];
  65.                 });
  66.  
  67.  
  68.         int days = d - cur + 1;
  69.         int rem = min(days * m[idx], n[idx]);
  70.         for (int j = 0; j < n[idx] && rem; ++j) {
  71.             if (vis[G[idx][j]])
  72.                 continue;
  73.             ans.back().push_back(G[idx][j]);
  74.             vis[G[idx][j]] = true;
  75.             rem--;
  76.         }
  77.  
  78.         if (ans.back().empty())
  79.             ++cnt;
  80.     }
  81.  
  82.     cout << (int) ans.size() - cnt << endl;
  83.  
  84.     for (int i = 0; i < (int) ans.size(); ++i) {
  85.         if (ans[i].empty())
  86.             continue;
  87.         cout << lib[i] << " " << (int) ans[i].size() << endl;
  88.         for (auto x : ans[i])
  89.             cout << x << " ";
  90.         cout << endl;
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement