QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#597257 | #9424. Stop the Castle 2 | ucup-team112# | AC ✓ | 250ms | 53640kb | C++20 | 24.0kb | 2024-09-28 17:22:57 | 2024-09-28 17:22:57 |
Judging History
answer
// #pragma GCC target("avx2")
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")
// #define INTERACTIVE
#include <bits/stdc++.h>
using namespace std;
namespace templates {
// type
using ll = long long;
using ull = unsigned long long;
using Pii = pair<int, int>;
using Pil = pair<int, ll>;
using Pli = pair<ll, int>;
using Pll = pair<ll, ll>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using qp = priority_queue<T, vector<T>, greater<T>>;
// clang-format off
#define vec(T, A, ...) vector<T> A(__VA_ARGS__);
#define vvec(T, A, h, ...) vector<vector<T>> A(h, vector<T>(__VA_ARGS__));
#define vvvec(T, A, h1, h2, ...) vector<vector<vector<T>>> A(h1, vector<vector<T>>(h2, vector<T>(__VA_ARGS__)));
// clang-format on
// for loop
#define fori1(a) for (ll _ = 0; _ < (a); _++)
#define fori2(i, a) for (ll i = 0; i < (a); i++)
#define fori3(i, a, b) for (ll i = (a); i < (b); i++)
#define fori4(i, a, b, c) for (ll i = (a); ((c) > 0 || i > (b)) && ((c) < 0 || i < (b)); i += (c))
#define overload4(a, b, c, d, e, ...) e
#define fori(...) overload4(__VA_ARGS__, fori4, fori3, fori2, fori1)(__VA_ARGS__)
// declare and input
// clang-format off
#define INT(...) int __VA_ARGS__; inp(__VA_ARGS__);
#define LL(...) ll __VA_ARGS__; inp(__VA_ARGS__);
#define STRING(...) string __VA_ARGS__; inp(__VA_ARGS__);
#define CHAR(...) char __VA_ARGS__; inp(__VA_ARGS__);
#define DOUBLE(...) double __VA_ARGS__; STRING(str___); __VA_ARGS__ = stod(str___);
#define VEC(T, A, n) vector<T> A(n); inp(A);
#define VVEC(T, A, n, m) vector<vector<T>> A(n, vector<T>(m)); inp(A);
// clang-format on
// const value
const ll MOD1 = 1000000007;
const ll MOD9 = 998244353;
const double PI = acos(-1);
// other macro
#if !defined(RIN__LOCAL) && !defined(INTERACTIVE)
#define endl "\n"
#endif
#define spa ' '
#define len(A) ll(A.size())
#define all(A) begin(A), end(A)
// function
vector<char> stoc(string &S) {
int n = S.size();
vector<char> ret(n);
for (int i = 0; i < n; i++) ret[i] = S[i];
return ret;
}
string ctos(vector<char> &S) {
int n = S.size();
string ret = "";
for (int i = 0; i < n; i++) ret += S[i];
return ret;
}
template <class T>
auto min(const T &a) {
return *min_element(all(a));
}
template <class T>
auto max(const T &a) {
return *max_element(all(a));
}
template <class T, class S>
auto clamp(T &a, const S &l, const S &r) {
return (a > r ? r : a < l ? l : a);
}
template <class T, class S>
inline bool chmax(T &a, const S &b) {
return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
return (a > b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chclamp(T &a, const S &l, const S &r) {
auto b = clamp(a, l, r);
return (a != b ? a = b, 1 : 0);
}
template <typename T>
T sum(vector<T> &A) {
T tot = 0;
for (auto a : A) tot += a;
return tot;
}
template <typename T>
vector<T> compression(vector<T> X) {
sort(all(X));
X.erase(unique(all(X)), X.end());
return X;
}
// input and output
namespace io {
// __int128_t
std::ostream &operator<<(std::ostream &dest, __int128_t value) {
std::ostream::sentry s(dest);
if (s) {
__uint128_t tmp = value < 0 ? -value : value;
char buffer[128];
char *d = std::end(buffer);
do {
--d;
*d = "0123456789"[tmp % 10];
tmp /= 10;
} while (tmp != 0);
if (value < 0) {
--d;
*d = '-';
}
int len = std::end(buffer) - d;
if (dest.rdbuf()->sputn(d, len) != len) {
dest.setstate(std::ios_base::badbit);
}
}
return dest;
}
// vector<T>
template <typename T>
istream &operator>>(istream &is, vector<T> &A) {
for (auto &a : A) is >> a;
return is;
}
template <typename T>
ostream &operator<<(ostream &os, vector<T> &A) {
for (size_t i = 0; i < A.size(); i++) {
os << A[i];
if (i != A.size() - 1) os << ' ';
}
return os;
}
// vector<vector<T>>
template <typename T>
istream &operator>>(istream &is, vector<vector<T>> &A) {
for (auto &a : A) is >> a;
return is;
}
template <typename T>
ostream &operator<<(ostream &os, vector<vector<T>> &A) {
for (size_t i = 0; i < A.size(); i++) {
os << A[i];
if (i != A.size() - 1) os << endl;
}
return os;
}
// pair<S, T>
template <typename S, typename T>
istream &operator>>(istream &is, pair<S, T> &A) {
is >> A.first >> A.second;
return is;
}
template <typename S, typename T>
ostream &operator<<(ostream &os, pair<S, T> &A) {
os << A.first << ' ' << A.second;
return os;
}
// vector<pair<S, T>>
template <typename S, typename T>
istream &operator>>(istream &is, vector<pair<S, T>> &A) {
for (size_t i = 0; i < A.size(); i++) {
is >> A[i];
}
return is;
}
template <typename S, typename T>
ostream &operator<<(ostream &os, vector<pair<S, T>> &A) {
for (size_t i = 0; i < A.size(); i++) {
os << A[i];
if (i != A.size() - 1) os << endl;
}
return os;
}
// tuple
template <typename T, size_t N>
struct TuplePrint {
static ostream &print(ostream &os, const T &t) {
TuplePrint<T, N - 1>::print(os, t);
os << ' ' << get<N - 1>(t);
return os;
}
};
template <typename T>
struct TuplePrint<T, 1> {
static ostream &print(ostream &os, const T &t) {
os << get<0>(t);
return os;
}
};
template <typename... Args>
ostream &operator<<(ostream &os, const tuple<Args...> &t) {
TuplePrint<decltype(t), sizeof...(Args)>::print(os, t);
return os;
}
// io functions
void FLUSH() {
cout << flush;
}
void print() {
cout << endl;
}
template <class Head, class... Tail>
void print(Head &&head, Tail &&...tail) {
cout << head;
if (sizeof...(Tail)) cout << spa;
print(std::forward<Tail>(tail)...);
}
template <typename T, typename S>
void prisep(vector<T> &A, S sep) {
int n = A.size();
for (int i = 0; i < n; i++) {
cout << A[i];
if (i != n - 1) cout << sep;
}
cout << endl;
}
template <typename T, typename S>
void priend(T A, S end) {
cout << A << end;
}
template <typename T>
void prispa(T A) {
priend(A, spa);
}
template <typename T, typename S>
bool printif(bool f, T A, S B) {
if (f)
print(A);
else
print(B);
return f;
}
template <class... T>
void inp(T &...a) {
(cin >> ... >> a);
}
} // namespace io
using namespace io;
// read graph
vector<vector<int>> read_edges(int n, int m, bool direct = false, int indexed = 1) {
vector<vector<int>> edges(n, vector<int>());
for (int i = 0; i < m; i++) {
INT(u, v);
u -= indexed;
v -= indexed;
edges[u].push_back(v);
if (!direct) edges[v].push_back(u);
}
return edges;
}
vector<vector<int>> read_tree(int n, int indexed = 1) {
return read_edges(n, n - 1, false, indexed);
}
template <typename T = long long>
vector<vector<pair<int, T>>> read_wedges(int n, int m, bool direct = false, int indexed = 1) {
vector<vector<pair<int, T>>> edges(n, vector<pair<int, T>>());
for (int i = 0; i < m; i++) {
INT(u, v);
T w;
inp(w);
u -= indexed;
v -= indexed;
edges[u].push_back({v, w});
if (!direct) edges[v].push_back({u, w});
}
return edges;
}
template <typename T = long long>
vector<vector<pair<int, T>>> read_wtree(int n, int indexed = 1) {
return read_wedges<T>(n, n - 1, false, indexed);
}
// yes / no
namespace yesno {
// yes
inline bool yes(bool f = true) {
cout << (f ? "yes" : "no") << endl;
return f;
}
inline bool Yes(bool f = true) {
cout << (f ? "Yes" : "No") << endl;
return f;
}
inline bool YES(bool f = true) {
cout << (f ? "YES" : "NO") << endl;
return f;
}
// no
inline bool no(bool f = true) {
cout << (!f ? "yes" : "no") << endl;
return f;
}
inline bool No(bool f = true) {
cout << (!f ? "Yes" : "No") << endl;
return f;
}
inline bool NO(bool f = true) {
cout << (!f ? "YES" : "NO") << endl;
return f;
}
// possible
inline bool possible(bool f = true) {
cout << (f ? "possible" : "impossible") << endl;
return f;
}
inline bool Possible(bool f = true) {
cout << (f ? "Possible" : "Impossible") << endl;
return f;
}
inline bool POSSIBLE(bool f = true) {
cout << (f ? "POSSIBLE" : "IMPOSSIBLE") << endl;
return f;
}
// impossible
inline bool impossible(bool f = true) {
cout << (!f ? "possible" : "impossible") << endl;
return f;
}
inline bool Impossible(bool f = true) {
cout << (!f ? "Possible" : "Impossible") << endl;
return f;
}
inline bool IMPOSSIBLE(bool f = true) {
cout << (!f ? "POSSIBLE" : "IMPOSSIBLE") << endl;
return f;
}
// Alice Bob
inline bool Alice(bool f = true) {
cout << (f ? "Alice" : "Bob") << endl;
return f;
}
inline bool Bob(bool f = true) {
cout << (f ? "Bob" : "Alice") << endl;
return f;
}
// Takahashi Aoki
inline bool Takahashi(bool f = true) {
cout << (f ? "Takahashi" : "Aoki") << endl;
return f;
}
inline bool Aoki(bool f = true) {
cout << (f ? "Aoki" : "Takahashi") << endl;
return f;
}
} // namespace yesno
using namespace yesno;
} // namespace templates
using namespace templates;
#ifndef ATCODER_MAXFLOW_HPP
#define ATCODER_MAXFLOW_HPP 1
#include <algorithm>
#include <cassert>
#include <limits>
#include <queue>
#include <vector>
#ifndef ATCODER_INTERNAL_QUEUE_HPP
#define ATCODER_INTERNAL_QUEUE_HPP 1
#include <vector>
namespace atcoder {
namespace internal {
template <class T>
struct simple_queue {
std::vector<T> payload;
int pos = 0;
void reserve(int n) {
payload.reserve(n);
}
int size() const {
return int(payload.size()) - pos;
}
bool empty() const {
return pos == int(payload.size());
}
void push(const T &t) {
payload.push_back(t);
}
T &front() {
return payload[pos];
}
void clear() {
payload.clear();
pos = 0;
}
void pop() {
pos++;
}
};
} // namespace internal
} // namespace atcoder
#endif // ATCODER_INTERNAL_QUEUE_HPP
namespace atcoder {
template <class Cap>
struct mf_graph {
public:
mf_graph() : _n(0) {}
explicit mf_graph(int n) : _n(n), g(n) {}
int add_edge(int from, int to, Cap cap) {
assert(0 <= from && from < _n);
assert(0 <= to && to < _n);
assert(0 <= cap);
int m = int(pos.size());
pos.push_back({from, int(g[from].size())});
int from_id = int(g[from].size());
int to_id = int(g[to].size());
if (from == to) to_id++;
g[from].push_back(_edge{to, to_id, cap});
g[to].push_back(_edge{from, from_id, 0});
return m;
}
struct edge {
int from, to;
Cap cap, flow;
};
edge get_edge(int i) {
int m = int(pos.size());
assert(0 <= i && i < m);
auto _e = g[pos[i].first][pos[i].second];
auto _re = g[_e.to][_e.rev];
return edge{pos[i].first, _e.to, _e.cap + _re.cap, _re.cap};
}
std::vector<edge> edges() {
int m = int(pos.size());
std::vector<edge> result;
for (int i = 0; i < m; i++) {
result.push_back(get_edge(i));
}
return result;
}
void change_edge(int i, Cap new_cap, Cap new_flow) {
int m = int(pos.size());
assert(0 <= i && i < m);
assert(0 <= new_flow && new_flow <= new_cap);
auto &_e = g[pos[i].first][pos[i].second];
auto &_re = g[_e.to][_e.rev];
_e.cap = new_cap - new_flow;
_re.cap = new_flow;
}
Cap flow(int s, int t) {
return flow(s, t, std::numeric_limits<Cap>::max());
}
Cap flow(int s, int t, Cap flow_limit) {
assert(0 <= s && s < _n);
assert(0 <= t && t < _n);
assert(s != t);
std::vector<int> level(_n), iter(_n);
internal::simple_queue<int> que;
auto bfs = [&]() {
std::fill(level.begin(), level.end(), -1);
level[s] = 0;
que.clear();
que.push(s);
while (!que.empty()) {
int v = que.front();
que.pop();
for (auto e : g[v]) {
if (e.cap == 0 || level[e.to] >= 0) continue;
level[e.to] = level[v] + 1;
if (e.to == t) return;
que.push(e.to);
}
}
};
auto dfs = [&](auto self, int v, Cap up) {
if (v == s) return up;
Cap res = 0;
int level_v = level[v];
for (int &i = iter[v]; i < int(g[v].size()); i++) {
_edge &e = g[v][i];
if (level_v <= level[e.to] || g[e.to][e.rev].cap == 0) continue;
Cap d = self(self, e.to, std::min(up - res, g[e.to][e.rev].cap));
if (d <= 0) continue;
g[v][i].cap += d;
g[e.to][e.rev].cap -= d;
res += d;
if (res == up) return res;
}
level[v] = _n;
return res;
};
Cap flow = 0;
while (flow < flow_limit) {
bfs();
if (level[t] == -1) break;
std::fill(iter.begin(), iter.end(), 0);
Cap f = dfs(dfs, t, flow_limit - flow);
if (!f) break;
flow += f;
}
return flow;
}
std::vector<bool> min_cut(int s) {
std::vector<bool> visited(_n);
internal::simple_queue<int> que;
que.push(s);
while (!que.empty()) {
int p = que.front();
que.pop();
visited[p] = true;
for (auto e : g[p]) {
if (e.cap && !visited[e.to]) {
visited[e.to] = true;
que.push(e.to);
}
}
}
return visited;
}
private:
int _n;
struct _edge {
int to, rev;
Cap cap;
};
std::vector<std::pair<int, int>> pos;
std::vector<std::vector<_edge>> g;
};
} // namespace atcoder
#endif // ATCODER_MAXFLOW_HPP
void solve() {
INT(n, m, k);
VEC(Pll, rook, n);
VEC(Pll, obst, m);
vec(ll, X, 0);
vec(ll, Y, 0);
for (auto [x, y] : rook) {
X.push_back(x);
Y.push_back(y);
}
for (auto [x, y] : obst) {
X.push_back(x);
Y.push_back(y);
}
X = compression(X);
Y = compression(Y);
for (auto &[x, y] : rook) {
x = lower_bound(all(X), x) - X.begin();
y = lower_bound(all(Y), y) - Y.begin();
}
for (auto &[x, y] : obst) {
x = lower_bound(all(X), x) - X.begin();
y = lower_bound(all(Y), y) - Y.begin();
}
int lx = len(X);
int ly = len(Y);
ll ans = 0;
using T = tuple<ll, ll, ll>;
vvec(T, X_, lx, 0);
vvec(T, Y_, ly, 0);
fori(i, n) {
auto [x, y] = rook[i];
X_[x].push_back({y, 0, i});
Y_[y].push_back({x, 0, i});
}
fori(i, m) {
auto [x, y] = obst[i];
X_[x].push_back({y, 1, i});
Y_[y].push_back({x, 1, i});
}
int c = 0;
vec(int, L, m, -1);
vec(int, R, m, -1);
fori(i, lx) {
sort(all(X_[i]));
int l = -1;
int r = -1;
fori(j, len(X_[i])) {
auto [y, t, _] = X_[i][j];
if (t == 0) {
if (l == -1) {
l = j;
r = j;
} else {
r = j;
ans++;
}
}
}
if (l == -1) continue;
fori(j, l + 1, r + 1) {
auto [y, t, idx] = X_[i][j];
if (t == 0) {
c++;
} else {
L[idx] = c;
}
}
}
int xc = c;
fori(i, ly) {
sort(all(Y_[i]));
int l = -1;
int r = -1;
fori(j, len(Y_[i])) {
auto [x, t, _] = Y_[i][j];
if (t == 0) {
if (l == -1) {
l = j;
r = j;
} else {
r = j;
ans++;
}
}
}
if (l == -1) continue;
fori(j, l + 1, r + 1) {
auto [x, t, idx] = Y_[i][j];
if (t == 0) {
c++;
} else {
R[idx] = c;
}
}
}
atcoder::mf_graph<ll> G(c + 2);
int s = c;
int t = c + 1;
fori(i, m) {
if (L[i] == -1 or R[i] == -1) continue;
G.add_edge(L[i], R[i], 1);
}
fori(i, xc) {
G.add_edge(s, i, 1);
}
fori(i, xc, c) {
G.add_edge(i, t, 1);
}
auto fl = G.flow(s, t);
vec(ll, PP, 0);
for (auto l : L) {
if (l != -1) PP.push_back(l);
}
for (auto r : R) {
if (r != -1) PP.push_back(r);
}
ll ma = len(compression(PP));
auto M = m;
m -= k;
ll two = min<ll>(fl, m);
m -= two;
ll minus = min(ma, 2 * two + m);
print(ans - minus);
set<Pll> two_edges;
vec(bool, used_X, c, false);
vec(bool, used_Y, c, false);
for (auto &e : G.edges()) {
if (e.flow == 1 and e.from != s and e.to != t) {
two_edges.insert({e.from, e.to});
}
}
m = M;
vec(bool, rem, m, false);
ll cc = m - k;
fori(i, m) {
if (cc > 0 and two_edges.count({L[i], R[i]})) {
rem[i] = true;
used_X[L[i]] = true;
used_Y[R[i]] = true;
cc--;
}
}
fori(i, m) {
if (rem[i] or cc == 0) continue;
if (L[i] != -1 and not used_X[L[i]]) {
rem[i] = true;
used_X[L[i]] = true;
cc--;
}
if (R[i] != -1 and not used_Y[R[i]]) {
rem[i] = true;
used_Y[R[i]] = true;
cc--;
}
}
fori(i, m) {
if (cc > 0 and !rem[i]) {
rem[i] = true;
cc--;
}
}
vec(ll, ans_idx, 0);
fori(i, m) {
if (!rem[i]) ans_idx.push_back(i + 1);
}
print(ans_idx);
}
int main() {
#ifndef INTERACTIVE
std::cin.tie(0)->sync_with_stdio(0);
#endif
// std::cout << std::fixed << std::setprecision(12);
int t;
t = 1;
std::cin >> t;
while (t--) solve();
return 0;
}
// // #pragma GCC target("avx2")
// // #pragma GCC optimize("O3")
// // #pragma GCC optimize("unroll-loops")
// // #define INTERACTIVE
//
// #include "kyopro-cpp/template.hpp"
//
// #include "atcoder/maxflow.hpp"
//
// void solve() {
// INT(n, m, k);
// VEC(Pll, rook, n);
// VEC(Pll, obst, m);
// vec(ll, X, 0);
// vec(ll, Y, 0);
// for (auto [x, y] : rook) {
// X.push_back(x);
// Y.push_back(y);
// }
// for (auto [x, y] : obst) {
// X.push_back(x);
// Y.push_back(y);
// }
// X = compression(X);
// Y = compression(Y);
// for (auto &[x, y] : rook) {
// x = lower_bound(all(X), x) - X.begin();
// y = lower_bound(all(Y), y) - Y.begin();
// }
// for (auto &[x, y] : obst) {
// x = lower_bound(all(X), x) - X.begin();
// y = lower_bound(all(Y), y) - Y.begin();
// }
//
// int lx = len(X);
// int ly = len(Y);
// ll ans = 0;
// using T = tuple<ll, ll, ll>;
// vvec(T, X_, lx, 0);
// vvec(T, Y_, ly, 0);
// fori(i, n) {
// auto [x, y] = rook[i];
// X_[x].push_back({y, 0, i});
// Y_[y].push_back({x, 0, i});
// }
// fori(i, m) {
// auto [x, y] = obst[i];
// X_[x].push_back({y, 1, i});
// Y_[y].push_back({x, 1, i});
// }
//
// int c = 0;
// vec(int, L, m, -1);
// vec(int, R, m, -1);
// fori(i, lx) {
// sort(all(X_[i]));
// int l = -1;
// int r = -1;
// fori(j, len(X_[i])) {
// auto [y, t, _] = X_[i][j];
// if (t == 0) {
// if (l == -1) {
// l = j;
// r = j;
// } else {
// r = j;
// ans++;
// }
// }
// }
// if (l == -1) continue;
// fori(j, l + 1, r + 1) {
// auto [y, t, idx] = X_[i][j];
// if (t == 0) {
// c++;
// } else {
// L[idx] = c;
// }
// }
// }
//
// int xc = c;
//
// fori(i, ly) {
// sort(all(Y_[i]));
// int l = -1;
// int r = -1;
// fori(j, len(Y_[i])) {
// auto [x, t, _] = Y_[i][j];
// if (t == 0) {
// if (l == -1) {
// l = j;
// r = j;
// } else {
// r = j;
// ans++;
// }
// }
// }
// if (l == -1) continue;
// fori(j, l + 1, r + 1) {
// auto [x, t, idx] = Y_[i][j];
// if (t == 0) {
// c++;
// } else {
// R[idx] = c;
// }
// }
// }
// atcoder::mf_graph<ll> G(c + 2);
// int s = c;
// int t = c + 1;
// fori(i, m) {
// if (L[i] == -1 or R[i] == -1) continue;
// G.add_edge(L[i], R[i], 1);
// }
// fori(i, xc) {
// G.add_edge(s, i, 1);
// }
// fori(i, xc, c) {
// G.add_edge(i, t, 1);
// }
//
// auto fl = G.flow(s, t);
//
// vec(ll, PP, 0);
// for (auto l : L) {
// if (l != -1) PP.push_back(l);
// }
// for (auto r : R) {
// if (r != -1) PP.push_back(r);
// }
// ll ma = len(compression(PP));
// auto M = m;
//
// m -= k;
// ll two = min<ll>(fl, m);
// m -= two;
//
// ll minus = min(ma, 2 * two + m);
//
// print(ans - minus);
//
// set<Pll> two_edges;
// vec(bool, used_X, c, false);
// vec(bool, used_Y, c, false);
// for (auto &e : G.edges()) {
// if (e.flow == 1 and e.from != s and e.to != t) {
// two_edges.insert({e.from, e.to});
// }
// }
//
// m = M;
// vec(bool, rem, m, false);
// ll cc = m - k;
// fori(i, m) {
// if (cc > 0 and two_edges.count({L[i], R[i]})) {
// rem[i] = true;
// used_X[L[i]] = true;
// used_Y[R[i]] = true;
// cc--;
// }
// }
// fori(i, m) {
// if (rem[i] or cc == 0) continue;
// if (L[i] != -1 and not used_X[L[i]]) {
// rem[i] = true;
// used_X[L[i]] = true;
// cc--;
// }
// if (R[i] != -1 and not used_Y[R[i]]) {
// rem[i] = true;
// used_Y[R[i]] = true;
// cc--;
// }
// }
// fori(i, m) {
// if (cc > 0 and !rem[i]) {
// rem[i] = true;
// cc--;
// }
// }
//
// vec(ll, ans_idx, 0);
// fori(i, m) {
// if (!rem[i]) ans_idx.push_back(i + 1);
// }
// print(ans_idx);
// }
//
// int main() {
// #ifndef INTERACTIVE
// std::cin.tie(0)->sync_with_stdio(0);
// #endif
// // std::cout << std::fixed << std::setprecision(12);
// int t;
// t = 1;
// std::cin >> t;
// while (t--) solve();
// return 0;
// }
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3512kb
input:
3 8 6 4 1 3 2 1 2 6 4 1 4 7 6 1 6 3 6 6 2 3 3 1 4 3 4 6 5 2 6 4 3 2 1 10 12 10 10 10 11 1 4 1 5 1 3 2 1 1 2 1 2 2 2 3
output:
4 2 3 5 6 2 2 0 2 3
result:
ok ok 3 cases (3 test cases)
Test #2:
score: 0
Accepted
time: 91ms
memory: 8940kb
input:
1224 11 17 14 7 3 4 2 8 13 3 15 3 4 5 11 10 2 3 3 8 6 7 11 2 3 10 4 1 3 12 1 2 5 11 9 11 6 11 10 8 15 1 5 9 14 4 11 1 6 10 7 7 6 11 4 8 4 1 11 18 3 2 14 8 2 14 13 13 9 12 14 12 5 6 8 1 10 5 8 6 8 9 6 6 7 5 12 11 6 11 13 5 1 10 7 6 14 5 6 15 2 4 11 1 1 6 4 14 14 13 9 9 3 10 12 7 5 8 13 9 14 1 9 8 4 9...
output:
7 3 4 5 6 7 8 9 10 11 12 13 15 16 17 15 2 3 0 3 4 5 6 0 2 3 4 5 6 7 8 9 11 1 3 8 1 2 3 0 1 2 3 4 5 6 7 8 9 10 11 12 1 5 6 7 9 10 11 12 8 17 18 19 1 1 2 3 4 5 6 7 8 7 6 8 10 13 14 15 1 10 11 12 13 14 15 16 17 18 19 20 0 1 1 2 3 0 5 6 7 7 8 12 13 14 15 2 10 11 12 13 14 4 3 4 5 6 7 8 1 18 1 4 5 6 7 8 9...
result:
ok ok 1224 cases (1224 test cases)
Test #3:
score: 0
Accepted
time: 175ms
memory: 52904kb
input:
1 86289 95092 40401 911 152 1 270 135 731 347 451 283 224 338 348 166 346 12 385 590 763 939 176 232 405 122 946 397 576 795 823 546 392 33 718 444 598 954 852 185 662 732 539 172 681 386 148 76 495 163 323 711 201 278 363 531 275 66 122 823 983 234 792 102 188 985 423 804 712 419 636 318 331 693 68...
output:
81531 5884 5885 5889 5893 5894 5895 5897 5898 5899 5911 5914 5917 5919 5920 5923 5924 5926 5927 5930 5934 5938 5940 5941 5949 5956 5961 5963 5964 5968 5969 5974 5975 5977 5979 5980 5981 5983 5984 5985 5987 5990 5992 5997 6000 6003 6006 6007 6008 6013 6017 6024 6028 6030 6031 6034 6037 6039 6042 6044...
result:
ok ok 1 cases (1 test case)
Test #4:
score: 0
Accepted
time: 159ms
memory: 49616kb
input:
1 99057 99722 73893 190482185 274379837 466851670 641324039 993028302 128875937 102891466 286559847 526771097 794238060 565736409 328262657 190329865 598878250 790626887 595298790 308031819 470646878 341575785 374318107 257299536 280924175 64420619 591124604 323023069 811512407 428956686 719615923 2...
output:
82045 1 6 9 10 11 13 15 16 18 19 20 21 22 24 25 28 29 30 33 34 35 36 37 38 39 43 45 47 49 50 51 52 54 55 59 60 61 62 65 67 69 70 71 79 81 82 83 87 89 90 91 93 94 95 96 99 100 101 102 104 105 107 109 110 111 112 113 114 118 119 120 124 128 129 131 133 136 137 138 142 143 147 148 149 151 152 153 154 1...
result:
ok ok 1 cases (1 test case)
Test #5:
score: 0
Accepted
time: 205ms
memory: 53072kb
input:
1 100000 99990 27662 913840909 999962982 690565691 31053 780601566 31053 54745498 31053 5383 859704869 538124857 999962982 5383 66851413 1444277 31053 119603839 999962982 999833258 543197820 999833258 349576387 999833258 759855830 999833258 124692224 266093388 999962982 5383 100041707 999833258 2843...
output:
100891 65623 65625 65626 65628 65629 65630 65631 65632 65633 65635 65636 65637 65638 65639 65640 65641 65643 65644 65645 65647 65649 65651 65654 65655 65656 65657 65658 65660 65661 65662 65663 65664 65665 65666 65667 65668 65669 65670 65671 65673 65674 65677 65678 65679 65680 65681 65682 65683 65684...
result:
ok ok 1 cases (1 test case)
Test #6:
score: 0
Accepted
time: 85ms
memory: 51956kb
input:
1 100000 49997 21428 9380 4333 9380 999999628 49202 4333 49202 999999628 50841 4333 50841 999999628 77418 4333 77418 999999628 95722 4333 95722 999999628 144002 4333 144002 999999628 234359 4333 234359 999999628 268942 4333 268942 999999628 288956 4333 288956 999999628 415094 4333 415094 999999628 4...
output:
100000 7099 7100 7102 7103 7104 7105 7106 7108 7110 7113 7114 7117 7119 7120 7122 7123 7126 7130 7131 7134 7135 7136 7140 7145 7149 7151 7154 7157 7158 7160 7162 7163 7167 7170 7172 7173 7174 7176 7178 7182 7183 7184 7188 7190 7197 7199 7201 7204 7205 7206 7208 7209 7211 7212 7213 7215 7216 7221 722...
result:
ok ok 1 cases (1 test case)
Test #7:
score: 0
Accepted
time: 111ms
memory: 40980kb
input:
1 100000 100000 76259 931427170 7 367311884 7 646435086 7 925372747 7 371054451 7 284185575 7 695090232 7 889183241 7 615617158 7 44230096 7 293281406 7 758261641 7 685549291 7 679471071 7 723138327 7 901136691 7 49281635 7 256352978 7 320188290 7 78730802 7 788131872 7 234735044 7 664906524 7 79430...
output:
76258 463 577 797 819 881 890 900 923 993 1008 1061 1208 1267 1273 1283 1330 1357 1370 1381 1402 1438 1488 1493 1550 1556 1566 1614 1619 1655 1673 1721 1727 1758 1767 1804 1813 1829 1831 1844 1882 1906 1908 1914 1941 2020 2100 2193 2201 2209 2245 2284 2289 2303 2456 2466 2476 2484 2504 2537 2557 256...
result:
ok ok 1 cases (1 test case)
Test #8:
score: 0
Accepted
time: 66ms
memory: 44696kb
input:
1 100000 49999 24999 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...
result:
ok ok 1 cases (1 test case)
Test #9:
score: 0
Accepted
time: 96ms
memory: 20032kb
input:
556 16 6 3 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 2 3 3 3 3 2 4 2 2 4 4 4 32 12 6 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 ...
output:
14 2 4 5 32 1 3 6 7 8 9 31 3 5 6 7 8 11 14 16 8 1 13 2 4 19 4 5 7 8 9 11 1 5 6 20 3 5 6 15 3 4 6 7 33 4 6 8 9 10 12 14 31 4 6 7 9 11 12 13 16 19 1 5 6 9 10 31 1 3 4 7 8 15 1 2 6 7 28 4 6 7 8 10 11 1 19 2 3 5 7 10 23 1 5 6 9 10 12 34 1 7 10 11 12 13 14 16 31 3 5 7 8 9 12 13 14 29 1 3 8 9 10 11 17 3 4...
result:
ok ok 556 cases (556 test cases)
Test #10:
score: 0
Accepted
time: 230ms
memory: 47852kb
input:
1 100000 50000 25000 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 2 3 6 9 12 13 16 17 21 23 24 26 27 29 31 32 35 37 40 42 44 49 50 52 53 58 59 62 66 67 69 70 71 72 73 74 75 76 77 79 80 81 83 84 86 87 92 93 95 96 98 99 100 101 105 106 107 108 110 112 116 120 123 125 126 127 128 131 133 134 136 139 140 142 144 150 154 161 163 166 167 168 169 171 172 175 181 18...
result:
ok ok 1 cases (1 test case)
Test #11:
score: 0
Accepted
time: 71ms
memory: 22428kb
input:
556 32 15 7 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 1 7 1000000000 7 1 8 1000000000 8 1 9 1000000000 9 7 6 4 3 5 4 2 2 ...
output:
28 1 2 3 7 8 10 15 11 1 4 20 3 4 23 4 7 8 9 10 26 1 2 6 7 8 17 1 10 2 31 2 3 6 8 14 1 31 2 3 4 5 7 11 14 34 2 3 4 5 7 8 15 16 3 32 1 2 6 7 8 29 3 5 28 1 6 7 8 10 12 15 31 1 2 4 5 6 8 14 25 3 5 8 9 15 2 4 5 29 1 5 6 9 11 31 1 4 7 8 15 1 2 7 29 1 3 27 1 3 6 19 5 6 7 9 25 1 6 7 9 2 1 16 2 32 2 3 9 11 1...
result:
ok ok 556 cases (556 test cases)
Test #12:
score: 0
Accepted
time: 93ms
memory: 51972kb
input:
1 100000 49999 24999 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 3 4 6 8 10 12 17 20 22 25 26 27 29 30 32 33 34 35 37 39 42 44 47 48 49 51 54 58 59 60 61 68 69 70 72 74 75 77 78 81 82 84 85 88 89 90 91 93 94 96 97 98 100 103 110 111 112 114 115 116 120 123 124 127 129 130 133 135 136 139 140 143 145 146 149 150 152 153 160 163 169 171 174 175 176 178 179 ...
result:
ok ok 1 cases (1 test case)
Test #13:
score: 0
Accepted
time: 95ms
memory: 20496kb
input:
556 22 1 1 2 1 2 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 1 7 1000000000 7 1 8 1000000000 8 1 9 1000000000 9 1 10 1000000000 10 1 11 1000000000 11 2 2 18 3 1 2 1 2 1000000000 3 1 3 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 ...
output:
29 1 19 1 20 1 5 14 2 5 25 2 28 1 2 3 4 6 8 9 23 1 29 3 5 8 10 11 28 2 3 5 6 5 1 23 6 7 8 9 11 31 2 3 5 10 13 14 15 29 2 3 7 1 26 1 27 2 3 6 9 12 13 24 1 5 7 14 3 5 32 3 4 5 6 10 11 13 14 24 1 2 5 27 1 2 3 6 7 10 32 1 2 3 4 5 9 14 15 30 1 3 5 24 2 3 7 15 2 3 6 26 1 18 1 2 6 22 2 34 5 6 7 8 11 14 15 ...
result:
ok ok 556 cases (556 test cases)
Test #14:
score: 0
Accepted
time: 250ms
memory: 48468kb
input:
1 100000 49999 24999 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 2 8 11 13 14 15 16 17 19 20 21 26 29 31 36 39 42 45 46 49 51 53 54 55 57 61 62 64 67 68 69 71 73 74 76 78 79 80 81 82 84 85 88 89 91 94 100 101 103 104 109 110 112 113 115 116 120 123 127 130 131 132 133 136 141 147 149 150 151 153 154 155 158 159 161 163 167 168 170 171 173 174 175 177 178 ...
result:
ok ok 1 cases (1 test case)
Test #15:
score: 0
Accepted
time: 157ms
memory: 44588kb
input:
1 100000 49998 34141 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
118282 1 4 5 6 7 8 11 12 14 15 16 19 23 25 26 27 28 30 31 32 33 34 35 37 38 39 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 63 65 66 67 68 69 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 91 92 93 94 95 96 98 99 100 101 102 103 104 109 111 112 113 114 115 117 119 120 121 122 124 126 127 1...
result:
ok ok 1 cases (1 test case)
Test #16:
score: 0
Accepted
time: 137ms
memory: 51048kb
input:
1 100000 82275 67072 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
119590 7 8 9 10 14 15 20 21 22 26 28 29 31 32 33 34 37 41 45 46 47 51 53 54 56 58 59 60 61 63 64 65 66 68 69 70 71 75 76 83 85 89 92 94 97 98 99 101 104 105 110 111 113 118 119 122 125 127 128 129 130 132 133 134 136 138 139 140 143 149 152 153 154 155 160 162 163 164 165 166 168 171 175 176 177 179...
result:
ok ok 1 cases (1 test case)
Test #17:
score: 0
Accepted
time: 87ms
memory: 24772kb
input:
556 30 12 6 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 1 7 1000000000 7 1 8 1000000000 8 1 9 1000000000 9 2 6 2 8 3 4 4 4 4 8 5 3 5 7 5 8 6...
output:
29 2 4 7 8 10 11 19 2 3 5 6 7 8 9 10 11 25 2 3 4 5 6 8 9 10 11 12 13 3 4 5 31 2 3 5 6 8 9 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 36 1 4 5 8 9 10 13 18 2 3 4 5 20 3 4 6 7 8 20 2 3 4 5 6 8 9 10 11 12 13 14 16 17 18 12 2 3 4 5 8 2 3 4 6 7 8 15 2 3 4 5 6 22 2 3 5 6 7 8 9 11 12 13 15 16 17 25...
result:
ok ok 556 cases (556 test cases)
Test #18:
score: 0
Accepted
time: 151ms
memory: 53640kb
input:
1 100000 99991 75553 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
101120 2 3 5 7 8 9 10 11 13 15 16 17 18 19 20 21 23 24 25 27 28 30 32 33 34 35 37 39 41 42 43 44 47 48 50 52 54 55 57 58 59 60 61 62 64 65 66 67 68 71 72 73 75 76 77 78 79 80 81 82 85 86 87 88 89 90 91 92 93 95 97 98 99 100 101 102 103 105 107 108 109 110 111 112 113 115 116 117 119 120 121 122 124 ...
result:
ok ok 1 cases (1 test case)
Extra Test:
score: 0
Extra Test Passed