Submission #72942729
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
// =============================================================
// A - Ice Cream Collection
// Beam search with "lazy action2 insertion" + time-dependent weights.
//
// Lazy action2 insertion (the user's interpretation):
// - The first time you arrive at a tree, you must harvest W.
// - If you arrive at the same tree again while it's still W, you may
// interpret that you had done action2 (-1) right after the previous
// visit, so that now you harvest R.
// - This increases the total number of actions by +1, but does NOT
// change the previously harvested ice.
//
// We implement this by:
// - When a state chooses "conversion" on arrival to tree v, we just
// mark v as R and add +1 to steps_used.
// - In the final output, we emit "-1" right after the previous move
// that arrived at v.
//
// Input constraints (from statement.md):
// N=100, K=10, T=10000
// =============================================================
// -------------------- Beam parameters --------------------
static constexpr int BEAM_WIDTH = 14 * 50; // keep top states per depth
static constexpr int SEG_MOVES = 400; // plan this many action1 per segment
static constexpr int MAX_SEGMENTS = 20000; // safety cap
// -------------------- Time-dependent weights --------------------
// ここだけいじれば「ターンごとのペナルティ調節」ができるようにしてある。
struct WeightSchedule {
// main objective
double w_score = 331.533847;
// early -> late (mixed by phase)
double w_cone_len_early = 2.911387;
double w_cone_len_late = 3.552239;
double w_visited_early = 8.212242;
double w_visited_late = 2.164051;
// "flip-to-R" penalty should vanish late
// 前半: 強く抑制 / 後半: ほぼ無視 にしたいなら late を 0 に寄せる
double w_r_cnt_early = -11.753740;
double w_r_cnt_late = -2.771546;
// prefer fewer used steps; relax late
double w_steps_early = -1.085573;
double w_steps_late = -0.476367;
// extra: be close to a shop late (delivery/revisit phase)
double w_near_shop_early = 0.045907;
double w_near_shop_late = 0.023645;
// extra: if cone is long, being near a shop is even better (late)
double w_near_shop_x_cone_early = 0.009956;
double w_near_shop_x_cone_late = 0.017383;
// extra: weakly balance shops (increase min |S_i|)
double w_min_shop = 0.910180;
// phase mixing window
// phase = steps_used / T. t=0 (early) -> t=1 (late)
// 例: center=0.72, halfwidth=0.15 なら 0.57〜0.87
// あたりで滑らかに切り替える。
double phase_center = 0.887931;
double phase_halfwidth = 0.136045;
// expansion control for conversion branch
// Always allow conversion when remaining steps is small, or in late phase.
int conv_rem_on = 14; // 残り手数 <= これ なら常に色変え分岐OK
double conv_phase_on = 0.597320; // phase >= これ なら常に色変え分岐OK
// In early phase, allow conversion only when it is "locally plausible" to
// pay off.
int conv_early_dist = 3; // 近い店がある(距離<=1)なら前半でも出す
int conv_early_cone = 6; // かつ cone がそこそこ長い時だけ(分岐爆発抑制)
};
static const WeightSchedule S;
static int N, M, K, Tlim;
static vector<vector<int>> g;
static vector<int> dist_nearest_shop;
static inline double clamp01(double x) { return x < 0 ? 0 : (x > 1 ? 1 : x); }
static inline double smoothstep(double t) {
t = clamp01(t);
return t * t * (3.0 - 2.0 * t);
}
static inline double lerp(double a, double b, double t) {
return a + (b - a) * t;
}
static inline double phase_t(int steps_used) {
double phase = (double)steps_used / (double)Tlim; // 0..1
double a = S.phase_center - S.phase_halfwidth;
double b = S.phase_center + S.phase_halfwidth;
double u = (phase - a) / (b - a);
return smoothstep(u);
}
// -------------------- Hashing for cone strings --------------------
static inline uint64_t splitmix64(uint64_t x) {
x += 0x9e3779b97f4a7c15ULL;
x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9ULL;
x = (x ^ (x >> 27)) * 0x94d049bb133111ebULL;
return x ^ (x >> 31);
}
static inline uint64_t rotl64(uint64_t x, int k) {
return (x << k) | (x >> (64 - k));
}
static uint64_t BASE1, BASE2;
// -------------------- Persistent immutable BST set --------------------
// Store 64-bit keys; membership & insertion O(height).
// Keys are mixed so expected height ~log.
struct PNode {
uint64_t key;
PNode *l, *r;
int sz;
};
static deque<PNode> PNODES;
static inline int psz(PNode* t) { return t ? t->sz : 0; }
static inline PNode* pnew(uint64_t key,
PNode* l = nullptr,
PNode* r = nullptr) {
PNODES.push_back(PNode{key, l, r, 1 + psz(l) + psz(r)});
return &PNODES.back();
}
static inline PNode* pcl(PNode* t) {
PNODES.push_back(*t);
return &PNODES.back();
}
static bool pcontains(PNode* t, uint64_t key) {
while (t) {
if (key == t->key) return true;
t = (key < t->key) ? t->l : t->r;
}
return false;
}
static PNode* pinsert_new(PNode* t, uint64_t key) {
if (!t) return pnew(key);
PNode* nt = pcl(t);
if (key < t->key)
nt->l = pinsert_new(t->l, key);
else
nt->r = pinsert_new(t->r, key);
nt->sz = 1 + psz(nt->l) + psz(nt->r);
return nt;
}
// -------------------- Bitset helpers (N=100) --------------------
static inline bool getbit(uint64_t lo, uint64_t hi, int v) {
if (v < 64) return (lo >> v) & 1ULL;
return (hi >> (v - 64)) & 1ULL;
}
static inline void setbit(uint64_t& lo, uint64_t& hi, int v) {
if (v < 64)
lo |= 1ULL << v;
else
hi |= 1ULL << (v - 64);
}
static inline int popcnt2(uint64_t lo, uint64_t hi) {
return __builtin_popcountll(lo) + __builtin_popcountll(hi);
}
// -------------------- State --------------------
struct State {
int pos = 0;
int prev_from = -1; // previous action1's origin (cannot return to it)
int steps_used = 0; // total actions = moves + conversions
int moves_used = 0; // number of action1
int score_sum = 0; // Σ |S_i|
// cone representation
uint64_t h1 = 0, h2 = 0;
int cone_len = 0;
// visited vertices
uint64_t vis_lo = 0, vis_hi = 0;
int visited_cnt = 0;
// flipped-to-R trees
uint64_t r_lo = 0, r_hi = 0;
int r_cnt = 0;
// last arrival move index for each vertex (-1 if never arrived via action1)
array<int16_t, 100> last_visit;
// per shop inventory set (persistent)
array<PNode*, 10> shop_root;
array<int, 10> shop_sz;
// trace index for segment reconstruction
int trace_idx = -1;
float eval = 0.0f;
};
struct TraceNode {
int prev;
int to;
uint8_t conv; // 1 if we used lazy conversion on this arrival
};
// -------------------- Helpers --------------------
static inline bool is_tree(int v) { return v >= K; }
static inline bool is_shop(int v) { return v < K; }
static inline bool is_visited(const State& st, int v) {
return getbit(st.vis_lo, st.vis_hi, v);
}
static inline void set_visited(State& st, int v) {
if (!is_visited(st, v)) {
setbit(st.vis_lo, st.vis_hi, v);
st.visited_cnt++;
}
}
static inline bool is_r(const State& st, int v) {
return getbit(st.r_lo, st.r_hi, v);
}
static inline void set_r(State& st, int v) {
if (!is_r(st, v)) {
setbit(st.r_lo, st.r_hi, v);
st.r_cnt++;
}
}
static inline uint64_t cone_key(uint64_t h1, uint64_t h2, int len) {
uint64_t x = h1 ^ rotl64(h2, 32) ^ (uint64_t)len * 0x9e3779b97f4a7c15ULL;
return splitmix64(x);
}
static inline void cone_push(State& st, char c) {
uint64_t v = (c == 'W') ? 1ULL : 2ULL;
st.h1 = st.h1 * BASE1 + v;
st.h2 = st.h2 * BASE2 + v;
st.cone_len++;
}
static float evaluate_state(const State& st) {
const int rem = Tlim - st.steps_used;
const int d = dist_nearest_shop[st.pos];
// int mn_shop = INT_MAX;
// for (int i = 0; i < K; i++) mn_shop = min(mn_shop, st.shop_sz[i]);
const double t = phase_t(st.steps_used);
const double w_cone = std::lerp(S.w_cone_len_early, S.w_cone_len_late, t);
const double w_vis = std::lerp(S.w_visited_early, S.w_visited_late, t);
const double w_r = std::lerp(S.w_r_cnt_early, S.w_r_cnt_late, t);
const double w_steps = std::lerp(S.w_steps_early, S.w_steps_late, t);
const double w_shop = std::lerp(S.w_near_shop_early, S.w_near_shop_late, t);
const double w_shop_c =
std::lerp(S.w_near_shop_x_cone_early, S.w_near_shop_x_cone_late, t);
// さらに「残りが少ないなら色変えし放題」感を強める(任意)
double w_r2 = w_r;
//if (rem <= 80) w_r2 = max(w_r2, -0.05);
double e = 0.0;
e += S.w_score * (double)st.score_sum;
e += w_cone * (double)st.cone_len;
e += w_vis * (double)st.visited_cnt;
e += w_r2 * (double)st.r_cnt;
e += w_steps * (double)st.steps_used;
// lateほど「店に近い」が嬉しい
e += w_shop * (double)(-d);
e += w_shop_c * (double)(-d * st.cone_len);
// mild balancing
//e += S.w_min_shop * (double)mn_shop;
return (float)e;
}
// conversion branch gating (for branching control + late game preference)
static inline bool allow_conv_branch(const State& st, int to) {
if (!is_tree(to)) return false;
if (!is_visited(st, to)) return false;
if (is_r(st, to)) return false;
const int rem = Tlim - st.steps_used;
const double phase = (double)st.steps_used / (double)Tlim;
// late / small remaining => always allow
if (rem <= S.conv_rem_on || phase >= S.conv_phase_on) return true;
// early: only allow if likely to pay off soon (reduce branching)
if (dist_nearest_shop[to] <= S.conv_early_dist &&
st.cone_len >= S.conv_early_cone)
return true;
return false;
}
// Apply a move to a copied state.
// - to: destination vertex
// - use_conv: if true, we harvest R on arrival by lazy-inserting -1 after
// previous visit
static inline bool transition(State& child,
const State& par,
int to,
bool use_conv,
vector<TraceNode>& trace_pool,
int global_move_offset) {
// movement restriction
if (par.prev_from != -1 && to == par.prev_from) return false;
const int cost = 1 + (use_conv ? 1 : 0);
if (par.steps_used + cost > Tlim) return false;
if (use_conv) {
if (!allow_conv_branch(par, to)) return false;
}
child = par;
if (use_conv) {
// mark this tree as R (conceptually performed after previous visit)
set_r(child, to);
}
// apply action1
child.steps_used += cost;
child.prev_from = par.pos;
child.pos = to;
// move index (0-based) in the whole output move list
const int new_move_idx = global_move_offset;
child.moves_used = par.moves_used + 1;
child.last_visit[to] = (int16_t)new_move_idx;
// visited
set_visited(child, to);
// effect by vertex type
if (is_tree(to)) {
const bool r_now = is_r(child, to);
cone_push(child, r_now ? 'R' : 'W');
} else {
// deliver cone string to this shop
const int shop = to;
const uint64_t key = cone_key(child.h1, child.h2, child.cone_len);
if (!pcontains(child.shop_root[shop], key)) {
child.shop_root[shop] = pinsert_new(child.shop_root[shop], key);
child.shop_sz[shop]++;
child.score_sum++;
}
// reset cone
child.h1 = child.h2 = 0;
child.cone_len = 0;
}
// trace
const int new_trace_idx = (int)trace_pool.size();
trace_pool.push_back(
TraceNode{par.trace_idx, to, (uint8_t)(use_conv ? 1 : 0)});
child.trace_idx = new_trace_idx;
// eval
child.eval = evaluate_state(child);
return true;
}
// Plan next segment from base state; returns (moves, conv_flags)
static pair<vector<int>, vector<uint8_t>> plan_segment(const State& base) {
vector<TraceNode> trace_pool;
trace_pool.reserve((size_t)BEAM_WIDTH * (size_t)SEG_MOVES * 6);
vector<State> cur, nxt;
cur.reserve(BEAM_WIDTH);
nxt.reserve(BEAM_WIDTH * 8);
State s0 = base;
s0.trace_idx = -1;
s0.eval = evaluate_state(s0);
cur.push_back(s0);
for (int depth = 0; depth < SEG_MOVES; depth++) {
nxt.clear();
for (const State& st : cur) {
const int global_move_offset = st.moves_used;
for (int to : g[st.pos]) {
if (st.prev_from != -1 && to == st.prev_from) continue;
// Always consider normal move
{
State ch;
if (transition(ch, st, to, false, trace_pool,
global_move_offset)) {
nxt.push_back(std::move(ch));
}
}
// Consider conversion move when allowed
if (allow_conv_branch(st, to)) {
State ch;
if (transition(ch, st, to, true, trace_pool,
global_move_offset)) {
nxt.push_back(std::move(ch));
}
}
}
}
if (nxt.empty()) break;
// Keep top BEAM_WIDTH by eval
if ((int)nxt.size() > BEAM_WIDTH) {
nth_element(
nxt.begin(), nxt.begin() + BEAM_WIDTH, nxt.end(),
[](const State& a, const State& b) { return a.eval > b.eval; });
nxt.resize(BEAM_WIDTH);
}
sort(nxt.begin(), nxt.end(), [](const State& a, const State& b) {
if (a.eval != b.eval) return a.eval > b.eval;
if (a.score_sum != b.score_sum) return a.score_sum > b.score_sum;
return a.steps_used < b.steps_used;
});
cur.swap(nxt);
}
// pick best leaf: prioritize score_sum, then eval
const State* best = &cur[0];
for (const State& st : cur) {
if (st.score_sum > best->score_sum)
best = &st;
else if (st.score_sum == best->score_sum && st.eval > best->eval)
best = &st;
}
// reconstruct segment
vector<int> moves;
vector<uint8_t> conv;
int idx = best->trace_idx;
while (idx != -1) {
moves.push_back(trace_pool[idx].to);
conv.push_back(trace_pool[idx].conv);
idx = trace_pool[idx].prev;
}
reverse(moves.begin(), moves.end());
reverse(conv.begin(), conv.end());
return {moves, conv};
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> N >> M >> K >> Tlim;
g.assign(N, {});
for (int i = 0; i < M; i++) {
int a, b;
cin >> a >> b;
g[a].push_back(b);
g[b].push_back(a);
}
// coordinates (unused)
for (int i = 0; i < N; i++) {
int x, y;
cin >> x >> y;
(void)x;
(void)y;
}
// precompute distance to nearest shop
dist_nearest_shop.assign(N, INT_MAX);
for (int s = 0; s < K; s++) {
vector<int> dist(N, -1);
queue<int> q;
dist[s] = 0;
q.push(s);
while (!q.empty()) {
int v = q.front();
q.pop();
for (int to : g[v]) {
if (dist[to] != -1) continue;
dist[to] = dist[v] + 1;
q.push(to);
}
}
for (int v = 0; v < N; v++) {
if (dist[v] != -1)
dist_nearest_shop[v] = min(dist_nearest_shop[v], dist[v]);
}
}
// Deterministic rolling hash bases
BASE1 = splitmix64(123456789ULL) | 1ULL;
BASE2 = splitmix64(987654321ULL) | 1ULL;
// initial state
State base;
base.pos = 0;
base.prev_from = -1;
base.steps_used = 0;
base.moves_used = 0;
base.score_sum = 0;
base.h1 = base.h2 = 0;
base.cone_len = 0;
base.vis_lo = base.vis_hi = 0;
base.visited_cnt = 0;
set_visited(base, 0);
base.r_lo = base.r_hi = 0;
base.r_cnt = 0;
base.last_visit.fill(-1);
base.shop_root.fill(nullptr);
base.shop_sz.fill(0);
vector<int> plan_moves;
vector<uint8_t> plan_flip_after; // 1 => output -1 after this move
plan_moves.reserve(Tlim);
plan_flip_after.reserve(Tlim);
// Plan in segments and commit each segment fully.
for (int seg = 0; seg < MAX_SEGMENTS; seg++) {
if (base.steps_used >= Tlim) break;
auto [seg_moves, seg_conv] = plan_segment(base);
if (seg_moves.empty()) break;
// Commit
for (size_t i = 0; i < seg_moves.size(); i++) {
int to = seg_moves[i];
bool use_conv = (seg_conv[i] != 0);
// If this move uses conversion, insert -1 after previous visit.
if (use_conv) {
int ins = base.last_visit[to];
if (ins >= 0 && ins < (int)plan_flip_after.size()) {
plan_flip_after[ins] = 1;
}
// account conversion step and mark R
if (base.steps_used + 1 > Tlim) break;
base.steps_used += 1;
set_r(base, to);
}
// Now do the move (action1)
if (base.steps_used + 1 > Tlim) break;
base.steps_used += 1;
int from = base.pos;
base.prev_from = from;
base.pos = to;
plan_moves.push_back(to);
plan_flip_after.push_back(0);
int move_idx = (int)plan_moves.size() - 1;
base.moves_used++;
base.last_visit[to] = (int16_t)move_idx;
set_visited(base, to);
if (is_tree(to)) {
const bool r_now = is_r(base, to);
cone_push(base, r_now ? 'R' : 'W');
} else {
const int shop = to;
const uint64_t key = cone_key(base.h1, base.h2, base.cone_len);
if (!pcontains(base.shop_root[shop], key)) {
base.shop_root[shop] =
pinsert_new(base.shop_root[shop], key);
base.shop_sz[shop]++;
base.score_sum++;
}
base.h1 = base.h2 = 0;
base.cone_len = 0;
}
if (base.steps_used >= Tlim) break;
}
}
// Output plan (moves + inserted -1)
int lines = 0;
for (int i = 0; i < (int)plan_moves.size(); i++) {
if (lines >= Tlim) break;
cout << plan_moves[i] << "\n";
lines++;
if (lines >= Tlim) break;
if (plan_flip_after[i]) {
cout << -1 << "\n";
lines++;
}
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | A - Ice Cream Collection |
| User | yosupo |
| Language | C++23 (Clang 21.1.0) |
| Score | 170286 |
| Code Size | 19596 Byte |
| Status | AC |
| Exec Time | 1705 ms |
| Memory | 207024 KiB |
Compile Error
./Main.cpp:245:15: warning: unused variable 'rem' [-Wunused-variable]
245 | const int rem = Tlim - st.steps_used;
| ^~~
./Main.cpp:92:22: warning: unused function 'lerp' [-Wunused-function]
92 | static inline double lerp(double a, double b, double t) {
| ^~~~
./Main.cpp:166:19: warning: unused function 'popcnt2' [-Wunused-function]
166 | static inline int popcnt2(uint64_t lo, uint64_t hi) {
| ^~~~~~~
./Main.cpp:212:20: warning: unused function 'is_shop' [-Wunused-function]
212 | static inline bool is_shop(int v) { return v < K; }
| ^~~~~~~
4 warnings generated.
Judge Result
| Set Name | test_ALL | ||
|---|---|---|---|
| Score / Max Score | 170286 / 1500000 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| test_ALL | test_0000.txt, test_0001.txt, test_0002.txt, test_0003.txt, test_0004.txt, test_0005.txt, test_0006.txt, test_0007.txt, test_0008.txt, test_0009.txt, test_0010.txt, test_0011.txt, test_0012.txt, test_0013.txt, test_0014.txt, test_0015.txt, test_0016.txt, test_0017.txt, test_0018.txt, test_0019.txt, test_0020.txt, test_0021.txt, test_0022.txt, test_0023.txt, test_0024.txt, test_0025.txt, test_0026.txt, test_0027.txt, test_0028.txt, test_0029.txt, test_0030.txt, test_0031.txt, test_0032.txt, test_0033.txt, test_0034.txt, test_0035.txt, test_0036.txt, test_0037.txt, test_0038.txt, test_0039.txt, test_0040.txt, test_0041.txt, test_0042.txt, test_0043.txt, test_0044.txt, test_0045.txt, test_0046.txt, test_0047.txt, test_0048.txt, test_0049.txt, test_0050.txt, test_0051.txt, test_0052.txt, test_0053.txt, test_0054.txt, test_0055.txt, test_0056.txt, test_0057.txt, test_0058.txt, test_0059.txt, test_0060.txt, test_0061.txt, test_0062.txt, test_0063.txt, test_0064.txt, test_0065.txt, test_0066.txt, test_0067.txt, test_0068.txt, test_0069.txt, test_0070.txt, test_0071.txt, test_0072.txt, test_0073.txt, test_0074.txt, test_0075.txt, test_0076.txt, test_0077.txt, test_0078.txt, test_0079.txt, test_0080.txt, test_0081.txt, test_0082.txt, test_0083.txt, test_0084.txt, test_0085.txt, test_0086.txt, test_0087.txt, test_0088.txt, test_0089.txt, test_0090.txt, test_0091.txt, test_0092.txt, test_0093.txt, test_0094.txt, test_0095.txt, test_0096.txt, test_0097.txt, test_0098.txt, test_0099.txt, test_0100.txt, test_0101.txt, test_0102.txt, test_0103.txt, test_0104.txt, test_0105.txt, test_0106.txt, test_0107.txt, test_0108.txt, test_0109.txt, test_0110.txt, test_0111.txt, test_0112.txt, test_0113.txt, test_0114.txt, test_0115.txt, test_0116.txt, test_0117.txt, test_0118.txt, test_0119.txt, test_0120.txt, test_0121.txt, test_0122.txt, test_0123.txt, test_0124.txt, test_0125.txt, test_0126.txt, test_0127.txt, test_0128.txt, test_0129.txt, test_0130.txt, test_0131.txt, test_0132.txt, test_0133.txt, test_0134.txt, test_0135.txt, test_0136.txt, test_0137.txt, test_0138.txt, test_0139.txt, test_0140.txt, test_0141.txt, test_0142.txt, test_0143.txt, test_0144.txt, test_0145.txt, test_0146.txt, test_0147.txt, test_0148.txt, test_0149.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| test_0000.txt | AC | 1154 ms | 153564 KiB |
| test_0001.txt | AC | 1281 ms | 152612 KiB |
| test_0002.txt | AC | 1131 ms | 129696 KiB |
| test_0003.txt | AC | 971 ms | 114536 KiB |
| test_0004.txt | AC | 1077 ms | 128020 KiB |
| test_0005.txt | AC | 1275 ms | 161848 KiB |
| test_0006.txt | AC | 1052 ms | 102892 KiB |
| test_0007.txt | AC | 1487 ms | 179396 KiB |
| test_0008.txt | AC | 1325 ms | 171044 KiB |
| test_0009.txt | AC | 1300 ms | 144908 KiB |
| test_0010.txt | AC | 1205 ms | 146880 KiB |
| test_0011.txt | AC | 1131 ms | 130952 KiB |
| test_0012.txt | AC | 1458 ms | 145952 KiB |
| test_0013.txt | AC | 1026 ms | 116720 KiB |
| test_0014.txt | AC | 1346 ms | 154372 KiB |
| test_0015.txt | AC | 1268 ms | 149536 KiB |
| test_0016.txt | AC | 1327 ms | 179476 KiB |
| test_0017.txt | AC | 1025 ms | 105076 KiB |
| test_0018.txt | AC | 1419 ms | 162492 KiB |
| test_0019.txt | AC | 1335 ms | 127216 KiB |
| test_0020.txt | AC | 1355 ms | 177848 KiB |
| test_0021.txt | AC | 1347 ms | 172376 KiB |
| test_0022.txt | AC | 1232 ms | 166836 KiB |
| test_0023.txt | AC | 1317 ms | 169064 KiB |
| test_0024.txt | AC | 1080 ms | 133724 KiB |
| test_0025.txt | AC | 1265 ms | 140392 KiB |
| test_0026.txt | AC | 1100 ms | 128852 KiB |
| test_0027.txt | AC | 1347 ms | 158472 KiB |
| test_0028.txt | AC | 1334 ms | 166688 KiB |
| test_0029.txt | AC | 1429 ms | 145484 KiB |
| test_0030.txt | AC | 1269 ms | 160100 KiB |
| test_0031.txt | AC | 1295 ms | 137472 KiB |
| test_0032.txt | AC | 1190 ms | 145496 KiB |
| test_0033.txt | AC | 1136 ms | 116692 KiB |
| test_0034.txt | AC | 1410 ms | 203192 KiB |
| test_0035.txt | AC | 1230 ms | 138568 KiB |
| test_0036.txt | AC | 1209 ms | 142852 KiB |
| test_0037.txt | AC | 1094 ms | 115988 KiB |
| test_0038.txt | AC | 1378 ms | 179116 KiB |
| test_0039.txt | AC | 906 ms | 95944 KiB |
| test_0040.txt | AC | 1152 ms | 137528 KiB |
| test_0041.txt | AC | 1318 ms | 131748 KiB |
| test_0042.txt | AC | 1133 ms | 133068 KiB |
| test_0043.txt | AC | 1046 ms | 119724 KiB |
| test_0044.txt | AC | 945 ms | 80128 KiB |
| test_0045.txt | AC | 1332 ms | 150888 KiB |
| test_0046.txt | AC | 1351 ms | 181484 KiB |
| test_0047.txt | AC | 1133 ms | 124296 KiB |
| test_0048.txt | AC | 1138 ms | 136052 KiB |
| test_0049.txt | AC | 1336 ms | 160368 KiB |
| test_0050.txt | AC | 1225 ms | 123164 KiB |
| test_0051.txt | AC | 1155 ms | 127224 KiB |
| test_0052.txt | AC | 1088 ms | 108504 KiB |
| test_0053.txt | AC | 1510 ms | 175912 KiB |
| test_0054.txt | AC | 1086 ms | 135480 KiB |
| test_0055.txt | AC | 1039 ms | 121780 KiB |
| test_0056.txt | AC | 1254 ms | 158704 KiB |
| test_0057.txt | AC | 1025 ms | 88992 KiB |
| test_0058.txt | AC | 1229 ms | 142672 KiB |
| test_0059.txt | AC | 1082 ms | 125716 KiB |
| test_0060.txt | AC | 1046 ms | 128532 KiB |
| test_0061.txt | AC | 1106 ms | 133312 KiB |
| test_0062.txt | AC | 1272 ms | 148220 KiB |
| test_0063.txt | AC | 1068 ms | 138880 KiB |
| test_0064.txt | AC | 1155 ms | 121228 KiB |
| test_0065.txt | AC | 1320 ms | 132284 KiB |
| test_0066.txt | AC | 1216 ms | 133352 KiB |
| test_0067.txt | AC | 1265 ms | 125968 KiB |
| test_0068.txt | AC | 1270 ms | 165936 KiB |
| test_0069.txt | AC | 1063 ms | 108400 KiB |
| test_0070.txt | AC | 1175 ms | 139732 KiB |
| test_0071.txt | AC | 1188 ms | 168020 KiB |
| test_0072.txt | AC | 1112 ms | 113496 KiB |
| test_0073.txt | AC | 1165 ms | 120780 KiB |
| test_0074.txt | AC | 1211 ms | 153816 KiB |
| test_0075.txt | AC | 1358 ms | 171480 KiB |
| test_0076.txt | AC | 1148 ms | 121152 KiB |
| test_0077.txt | AC | 1367 ms | 151264 KiB |
| test_0078.txt | AC | 1347 ms | 179600 KiB |
| test_0079.txt | AC | 1086 ms | 122680 KiB |
| test_0080.txt | AC | 1309 ms | 150232 KiB |
| test_0081.txt | AC | 1338 ms | 166476 KiB |
| test_0082.txt | AC | 1472 ms | 190932 KiB |
| test_0083.txt | AC | 1292 ms | 146608 KiB |
| test_0084.txt | AC | 1262 ms | 159260 KiB |
| test_0085.txt | AC | 1433 ms | 173856 KiB |
| test_0086.txt | AC | 1270 ms | 125064 KiB |
| test_0087.txt | AC | 1131 ms | 139024 KiB |
| test_0088.txt | AC | 1304 ms | 166328 KiB |
| test_0089.txt | AC | 1345 ms | 145664 KiB |
| test_0090.txt | AC | 1137 ms | 149548 KiB |
| test_0091.txt | AC | 1099 ms | 126496 KiB |
| test_0092.txt | AC | 1205 ms | 120488 KiB |
| test_0093.txt | AC | 1046 ms | 114676 KiB |
| test_0094.txt | AC | 1268 ms | 148144 KiB |
| test_0095.txt | AC | 1101 ms | 126044 KiB |
| test_0096.txt | AC | 1275 ms | 127020 KiB |
| test_0097.txt | AC | 1352 ms | 146312 KiB |
| test_0098.txt | AC | 958 ms | 98444 KiB |
| test_0099.txt | AC | 1110 ms | 132012 KiB |
| test_0100.txt | AC | 1058 ms | 120664 KiB |
| test_0101.txt | AC | 1091 ms | 114968 KiB |
| test_0102.txt | AC | 1227 ms | 138408 KiB |
| test_0103.txt | AC | 1396 ms | 152340 KiB |
| test_0104.txt | AC | 1228 ms | 120112 KiB |
| test_0105.txt | AC | 1193 ms | 148896 KiB |
| test_0106.txt | AC | 1286 ms | 188448 KiB |
| test_0107.txt | AC | 1500 ms | 167676 KiB |
| test_0108.txt | AC | 1187 ms | 140692 KiB |
| test_0109.txt | AC | 1114 ms | 109828 KiB |
| test_0110.txt | AC | 1378 ms | 142008 KiB |
| test_0111.txt | AC | 1030 ms | 104896 KiB |
| test_0112.txt | AC | 1301 ms | 135764 KiB |
| test_0113.txt | AC | 1280 ms | 145072 KiB |
| test_0114.txt | AC | 1466 ms | 156032 KiB |
| test_0115.txt | AC | 1051 ms | 135836 KiB |
| test_0116.txt | AC | 1329 ms | 154868 KiB |
| test_0117.txt | AC | 1309 ms | 183284 KiB |
| test_0118.txt | AC | 1112 ms | 143668 KiB |
| test_0119.txt | AC | 1705 ms | 115276 KiB |
| test_0120.txt | AC | 1411 ms | 153044 KiB |
| test_0121.txt | AC | 1276 ms | 152328 KiB |
| test_0122.txt | AC | 1281 ms | 154792 KiB |
| test_0123.txt | AC | 1087 ms | 135556 KiB |
| test_0124.txt | AC | 1315 ms | 152308 KiB |
| test_0125.txt | AC | 1204 ms | 132468 KiB |
| test_0126.txt | AC | 1428 ms | 183616 KiB |
| test_0127.txt | AC | 1275 ms | 155728 KiB |
| test_0128.txt | AC | 1221 ms | 136636 KiB |
| test_0129.txt | AC | 1265 ms | 139068 KiB |
| test_0130.txt | AC | 1292 ms | 156476 KiB |
| test_0131.txt | AC | 1019 ms | 116640 KiB |
| test_0132.txt | AC | 1135 ms | 143668 KiB |
| test_0133.txt | AC | 1324 ms | 163032 KiB |
| test_0134.txt | AC | 1338 ms | 168528 KiB |
| test_0135.txt | AC | 1368 ms | 207024 KiB |
| test_0136.txt | AC | 1172 ms | 136236 KiB |
| test_0137.txt | AC | 1143 ms | 147708 KiB |
| test_0138.txt | AC | 1170 ms | 108036 KiB |
| test_0139.txt | AC | 1564 ms | 186276 KiB |
| test_0140.txt | AC | 1374 ms | 183840 KiB |
| test_0141.txt | AC | 1311 ms | 161984 KiB |
| test_0142.txt | AC | 992 ms | 129548 KiB |
| test_0143.txt | AC | 1213 ms | 139948 KiB |
| test_0144.txt | AC | 1480 ms | 173644 KiB |
| test_0145.txt | AC | 1447 ms | 178264 KiB |
| test_0146.txt | AC | 1160 ms | 107912 KiB |
| test_0147.txt | AC | 1202 ms | 125168 KiB |
| test_0148.txt | AC | 1410 ms | 183864 KiB |
| test_0149.txt | AC | 1312 ms | 171000 KiB |