Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. #define c_boost std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr)
  6.  
  7. using namespace std;
  8. using LL = long long;
  9. using PLL = pair <LL, LL>;
  10. const LL mod = 10e9 + 7;
  11.  
  12. // @author: Danielto1404
  13.  
  14. void solve() {
  15.     int n, m;
  16.     cin >> n;
  17.     vector <LL> enemy;
  18.     vector <PLL> heroes;
  19.  
  20.     LL max_enemy = 0;
  21.     LL max_hero = 0;
  22.  
  23.     enemy.resize(n);
  24.     for (LL& power: enemy) {
  25.         cin >> power;
  26.         max_enemy = max(max_enemy, power);
  27.     }
  28.  
  29.     cin >> m;
  30.     heroes.resize(m);
  31.     for (PLL& hero: heroes) {
  32.         cin >> hero.first >> hero.second;
  33.         max_hero = max(max_hero, hero.first);
  34.     }
  35.  
  36.     if (max_hero < max_enemy) {
  37.         cout << -1;
  38.         return;
  39.     }
  40.  
  41.     sort(heroes.begin(), heroes.end());
  42.  
  43.     int idx = 0;
  44.     int days = 0;
  45.     while (idx < n) {
  46.         LL enemyPower = enemy[idx];
  47.         int curDays = INT32_MAX;
  48.         int start = 0;
  49.         for (int i = 0; i < n; ++i)
  50.             if (heroes[i].first >= enemyPower) {
  51.                 start = i;
  52.                 break;
  53.             }
  54.         int enemyIdx = idx;
  55.         for (int i = start; i < m; ++i) {
  56.             LL heroPower = heroes[i].first;
  57.             LL heroStamina = heroes[i].second;
  58.             while (enemyIdx < n && enemy[enemyIdx] <= heroPower && enemyIdx - idx < heroStamina) {
  59.                 enemyIdx++;
  60.             }
  61.             curDays = min(curDays, enemyIdx - idx);
  62.         }
  63.         days++;
  64.         idx += curDays;
  65.     }
  66.     cout << days << '\n';
  67. }
  68.  
  69. int main() {
  70.     c_boost;
  71.     int t;
  72.     cin >> t;
  73.     while (t--)
  74.         solve();
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement