Submission #954808

# Submission time Handle Problem Language Result Execution time Memory
954808 2024-03-28T15:23:08 Z evenvalue Bitaro’s Party (JOI18_bitaro) C++17
7 / 100
2000 ms 217480 KB
#include <bits/stdc++.h>
using namespace std;

#ifdef evenvalue
  #include "debug.h"
#else
  #define debug(...)
#endif

using int64 = long long;
using ld = long double;

template<typename T>
using min_heap = priority_queue<T, vector<T>, greater<T>>;
template<typename T>
using max_heap = priority_queue<T, vector<T>, less<T>>;

namespace Read {
int Int() {
  int x;
  cin >> x;
  return x;
}
int64 Int64() {
  int64 x;
  cin >> x;
  return x;
}
char Char() {
  char c;
  cin >> c;
  return c;
}
string String() {
  string s;
  cin >> s;
  return s;
}
double Double() {
  return stod(String());
}
ld LongDouble() {
  return stold(String());
}
template<typename T1, typename T2>
pair<T1, T2> Pair() {
  pair<T1, T2> p;
  cin >> p.first >> p.second;
  return p;
}
template<typename T>
vector<T> Vec(const int n) {
  vector<T> v(n);
  for (T &x : v) {
    cin >> x;
  }
  return v;
}
template<typename T>
vector<vector<T>> VecVec(const int n, const int m) {
  vector<vector<T>> v(n);
  for (vector<T> &vec : v) {
    vec = Vec<T>(m);
  }
  return v;
}
}//namespace Read

constexpr int kInf = 1e9 + 10;
constexpr int64 kInf64 = 1e15 + 10;
constexpr int kMod = 1e9 + 7;
constexpr int kMaxN = 2e5 + 10;
constexpr int kSqrtN = 350;

inline void solution() {
  const int n = Read::Int();
  const int m = Read::Int();
  const int q = Read::Int();

  vector<vector<int>> in(n);
  for (int i = 0; i < m; i++) {
    const int x = Read::Int() - 1;
    const int y = Read::Int() - 1;
    in[y].push_back(x);
  }

  auto calc_dp = [&](const int size, const vector<bool> &busy, const int till) {
    vector<vector<pair<int, int>>> dp(n);
    for (int x = 0; x <= till; x++) {
      vector<pair<int, int>> best;
      best.emplace_back(-kInf, x);
      if (not busy[x]) best.emplace_back(-1, x);
      for (const int y : in[x]) {
        best.insert(best.end(), dp[y].begin(), dp[y].end());
      }
      sort(best.rbegin(), best.rend());
      while (best.size() > size) best.pop_back();
      for (auto &[dist, y] : best) dist++;
      dp[x] = best;
    }
    return dp;
  };

  vector<bool> busy(n);
  const auto best_paths = calc_dp(kSqrtN, busy, n - 1);

  for (int qry = 0; qry < q; qry++) {
    const int x = Read::Int() - 1;
    const vector<int> nerds = Read::Vec<int>(Read::Int());

    for (const int nerd : nerds) {
      busy[nerd - 1] = true;
    }

    if (nerds.size() >= kSqrtN) {
      cout << max(calc_dp(1, busy, x)[x][0].first, -1) << '\n';
    } else {
      bool found = false;
      for (const auto [dist, y] : best_paths[x]) {
        if (busy[y]) continue;
        found = true;
        cout << dist << '\n';
        break;
      }
      if (not found) cout << -1 << '\n';
    }

    for (const int nerd : nerds) {
      busy[nerd - 1] = false;
    }
  }
}

int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  //freopen(".in", "r", stdin);
  //freopen(".out", "w", stdout);

  cout << fixed << setprecision(10);

  int testcases = 1;
  //cin >> testcases;
  while (testcases--) {
    solution();
  }
}

Compilation message

bitaro.cpp: In lambda function:
bitaro.cpp:97:26: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'const int' [-Wsign-compare]
   97 |       while (best.size() > size) best.pop_back();
      |              ~~~~~~~~~~~~^~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 456 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 18 ms 2280 KB Output is correct
6 Correct 16 ms 2136 KB Output is correct
7 Correct 16 ms 2140 KB Output is correct
8 Correct 29 ms 3160 KB Output is correct
9 Correct 28 ms 3160 KB Output is correct
10 Correct 33 ms 3128 KB Output is correct
11 Correct 29 ms 3152 KB Output is correct
12 Correct 23 ms 2652 KB Output is correct
13 Correct 33 ms 3060 KB Output is correct
14 Correct 21 ms 1880 KB Output is correct
15 Correct 11 ms 1880 KB Output is correct
16 Correct 21 ms 1884 KB Output is correct
17 Correct 23 ms 2512 KB Output is correct
18 Correct 15 ms 2136 KB Output is correct
19 Correct 22 ms 2624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 456 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 18 ms 2280 KB Output is correct
6 Correct 16 ms 2136 KB Output is correct
7 Correct 16 ms 2140 KB Output is correct
8 Correct 29 ms 3160 KB Output is correct
9 Correct 28 ms 3160 KB Output is correct
10 Correct 33 ms 3128 KB Output is correct
11 Correct 29 ms 3152 KB Output is correct
12 Correct 23 ms 2652 KB Output is correct
13 Correct 33 ms 3060 KB Output is correct
14 Correct 21 ms 1880 KB Output is correct
15 Correct 11 ms 1880 KB Output is correct
16 Correct 21 ms 1884 KB Output is correct
17 Correct 23 ms 2512 KB Output is correct
18 Correct 15 ms 2136 KB Output is correct
19 Correct 22 ms 2624 KB Output is correct
20 Correct 1325 ms 8524 KB Output is correct
21 Correct 1384 ms 8228 KB Output is correct
22 Correct 1336 ms 8432 KB Output is correct
23 Correct 1406 ms 12416 KB Output is correct
24 Execution timed out 2077 ms 217480 KB Time limit exceeded
25 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 456 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 18 ms 2280 KB Output is correct
6 Correct 16 ms 2136 KB Output is correct
7 Correct 16 ms 2140 KB Output is correct
8 Correct 29 ms 3160 KB Output is correct
9 Correct 28 ms 3160 KB Output is correct
10 Correct 33 ms 3128 KB Output is correct
11 Correct 29 ms 3152 KB Output is correct
12 Correct 23 ms 2652 KB Output is correct
13 Correct 33 ms 3060 KB Output is correct
14 Correct 21 ms 1880 KB Output is correct
15 Correct 11 ms 1880 KB Output is correct
16 Correct 21 ms 1884 KB Output is correct
17 Correct 23 ms 2512 KB Output is correct
18 Correct 15 ms 2136 KB Output is correct
19 Correct 22 ms 2624 KB Output is correct
20 Correct 1325 ms 8524 KB Output is correct
21 Correct 1384 ms 8228 KB Output is correct
22 Correct 1336 ms 8432 KB Output is correct
23 Correct 1406 ms 12416 KB Output is correct
24 Execution timed out 2077 ms 217480 KB Time limit exceeded
25 Halted 0 ms 0 KB -