Submission #58801485
Source Code Expand
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
typedef int ll;
typedef long double ld;
#include <bits/stdc++.h>
using namespace std;
ll n, m, v;
set<pair<ll, ll>> s, t;
std::chrono::high_resolution_clock::time_point start;
ll dis(pair<ll, ll> x, pair<ll, ll> y) {
return abs(x.first - y.first) + abs(x.second - y.second);
}
// xor128による乱数生成、周期は2^128-1
unsigned int randInt() {
static unsigned int tx = 123456789, ty = 362436069, tz = 521288629,
tw = 88675123;
unsigned int tt = (tx ^ (tx << 11));
tx = ty;
ty = tz;
tz = tw;
return (tw = (tw ^ (tw >> 19)) ^ (tt ^ (tt >> 8)));
}
int randInt(int minv, int maxv) { return randInt() % (maxv - minv + 1) + minv; }
ll min_score = 1e6;
bool inrange(ll x, ll y) {
if (x < 0 || x >= n || y < 0 || y >= n) {
return false;
} else {
return true;
}
}
struct Ope {
uint_fast8_t dir;
uint_fast16_t rotateL;
uint_fast16_t rotateR;
uint_fast16_t grab;
};
pair<int, int> rotate90(int x, int y, int a, int b) {
return {-(y - b) + a, (x - a) + b};
}
pair<ll, ll> rotate90(pair<ll, ll> a, pair<ll, ll> b) {
return rotate90(a.first, a.second, b.first, b.second);
}
pair<int, int> rotate270(int x, int y, int a, int b) {
return {(y - b) + a, -(x - a) + b};
}
pair<ll, ll> rotate270(pair<ll, ll> a, pair<ll, ll> b) {
return rotate270(a.first, a.second, b.first, b.second);
}
pair<int, int> rotate180(int x, int y, int a, int b) {
return {-(x - a) + a, -(y - b) + b};
}
pair<ll, ll> rotate180(pair<ll, ll> a, pair<ll, ll> b) {
return rotate180(a.first, a.second, b.first, b.second);
}
map<char, int_fast8_t> ddd;
struct Tree {
vector<pair<ll, ll>> pos;
pair<ll, ll> init;
vector<ll> par;
set<pair<ll, ll>> s, t;
string none = "";
set<ll> have;
set<ll> empty;
set<ll> fushi;
vector<ll> lens;
vector<vector<ll>> child;
void build(pair<ll, ll> initpos, ll size, vector<ll> length,
vector<ll> parent, set<pair<ll, ll>> &ss, set<pair<ll, ll>> &tt) {
init = initpos;
for (auto &&e : ss) {
s.insert(e);
}
for (auto &&e : tt) {
t.insert(e);
}
d['R'] = {0, 1};
d['L'] = {0, -1};
d['U'] = {-1, 0};
d['D'] = {1, 0};
pos.resize(size);
par.resize(size);
lens.resize(size);
child.resize(size);
pos[0] = initpos;
for (int i = 1; i < size; i++) {
par[i] = parent[i - 1];
pos[i] = {pos[par[i]].first, pos[par[i]].second + length[i - 1]};
child[par[i]].push_back(i);
lens[i] = length[i - 1];
none += "..";
}
for (ll i = 1; i < size; i++) {
if (child[i].size() == 0) {
empty.insert(i);
} else {
fushi.insert(i);
}
}
none += "..";
}
vector<Ope> history;
ll ans_size() {
if (ng) {
return 1e6;
} else {
min_score = min(min_score, (ll)history.size());
return history.size();
}
}
void add_ope_newly(ll node, char c) {
Ope o;
o.dir = 0;
o.rotateL = 0;
o.rotateR = 0;
o.grab = 0;
if (node != 0 && c != 'P') {
if (c == 'R') {
o.rotateR |= 1 << (node - 1);
} else if (c == 'L') {
o.rotateL |= 1 << (node - 1);
} else {
cerr << "ERROR!!!" << endl;
}
} else if (node == 0 && c != 'P') {
o.dir = ddd[c];
} else if (c == 'P') {
o.grab |= 1 << (node);
} else {
cerr << "ERRRORRRR!!" << endl;
}
history.push_back(o);
}
void add_ope(ll node, char c) {
// 個々の処理を見直す
// add_ope_newly(node, c);
// return;
if (history.size() == 0) {
add_ope_newly(node, c);
} else {
auto now = history.back();
if (node == 0 && c != 'P') {
if (now.dir != 0 || now.grab != 0) {
add_ope_newly(node, c);
} else {
now.dir = ddd[c];
history.back() = now;
}
} else if (c == 'P') {
if (now.grab & (1 << node)) {
add_ope_newly(node, c);
} else {
now.grab |= 1 << (node);
history.back() = now;
}
} else {
bool ok = true;
// TODO: 見直したい
function<void(ll)> saiki = [&](ll cur) {
if ((now.rotateL & (1 << (cur - 1))) ||
(now.rotateR & (1 << (cur - 1))) || (now.grab & (1 << (cur)))) {
ok = false;
return;
} else {
for (auto &&e : child[cur]) {
saiki(e);
if (!ok) return;
}
}
};
saiki(node);
if (ok) {
if (c == 'R') {
now.rotateR |= 1 << (node - 1);
} else {
now.rotateL |= 1 << (node - 1);
}
history.back() = now;
} else {
add_ope_newly(node, c);
}
}
}
}
void rotate(ll x, bool c, ll from = -1) {
if (from == -1) {
if (c) {
add_ope(x, 'L');
} else {
add_ope(x, 'R');
}
}
pair<ll, ll> center;
if (from == -1) {
center = pos[par[x]];
from = par[x];
} else {
center = pos[from];
}
if (c) {
pos[x] =
rotate90(pos[x].first, pos[x].second, center.first, center.second);
} else {
pos[x] =
rotate270(pos[x].first, pos[x].second, center.first, center.second);
}
for (auto chi : child[x]) {
rotate(chi, c, from);
}
}
// TODO: change
bool debug = false;
void debug_output() {
return;
cerr << "debug" << endl;
for (ll i = 0; i < (ll)pos.size(); i++) {
cerr << i << " " << pos[i].first << " " << pos[i].second << endl;
}
}
void grab(ll node) {
if (debug) {
if (have.find(node) != have.end()) {
cerr << node << " already has " << endl;
}
}
empty.erase(node);
have.insert(node);
add_ope(node, 'P');
}
void release(ll node) {
if (debug) {
if (empty.find(node) != empty.end()) {
cerr << node << " already empty " << endl;
}
}
have.erase(node);
empty.insert(node);
add_ope(node, 'P');
}
map<char, pair<ll, ll>> d;
void move(char x) {
pair<ll, ll> next = {pos[0].first + d[x].first,
pos[0].second + d[x].second};
if (next.first < 0 || next.first >= n || next.second < 0 ||
next.second >= n) {
// ロジックの問題があるので回転させておちゃをにごす
cerr << "unavoidable rotate" << endl;
for (ll i = 1; i < (ll)pos.size(); i++) {
rotate(i, true);
}
return;
}
add_ope(0, x);
// cerr << "MOVE: " << x << endl;
// cerr << "MOVE: " << x << endl;
for (int i = 0; i < (ll)pos.size(); i++) {
if (x == 'R') {
pos[i].second++;
} else if (x == 'L') {
pos[i].second--;
} else if (x == 'U') {
pos[i].first--;
} else if (x == 'D') {
pos[i].first++;
}
}
}
void output() {
tujituma();
std::cout << (ll)pos.size() << std::endl;
for (int i = 0; i < (ll)pos.size() - 1; i++) {
std::cout << par[i + 1] << " " << lens[i + 1] << std::endl;
}
std::cout << init.first << " " << init.second << std::endl;
for (auto &&i : history) {
if (i.dir == 0) {
cout << ".";
} else {
for (auto &&j : {'R', 'L', 'U', 'D'}) {
if (ddd[j] == i.dir) cout << j;
}
}
for (ll j = 0; j < (ll)pos.size() - 1; j++) {
if (i.rotateL & (1 << j)) {
cout << 'L';
} else if (i.rotateR & (1 << j)) {
cout << 'R';
} else {
cout << '.';
}
}
for (ll j = 0; j < (ll)pos.size(); j++) {
if (i.grab & (1 << j)) {
cout << 'P';
} else {
cout << '.';
}
}
cout << endl;
}
}
bool ng = false;
auto nearest(ll e, bool iss) {
if (e == 0) {
cerr << "ISSUE" << endl;
}
ll mi = 1000000;
ll mi1 = 1000000;
ll mi2 = 1000000;
ll mi3 = 1000000;
auto pos0 = pos[e];
auto pos90 = rotate90(pos0, pos[par[e]]);
auto pos270 = rotate270(pos0, pos[par[e]]);
auto pos180 = rotate180(pos0, pos[par[e]]);
tuple<ll, pair<ll, ll>, pair<ll, ll>, ll, ll> res;
tuple<ll, pair<ll, ll>, pair<ll, ll>, ll, ll> res1;
tuple<ll, pair<ll, ll>, pair<ll, ll>, ll, ll> res2;
tuple<ll, pair<ll, ll>, pair<ll, ll>, ll, ll> res3;
set<pair<ll, ll>> *se;
if (iss) {
se = &s;
} else {
se = &t;
}
bool first = true;
for (auto &&i : *se) {
ll dist0 = dis(i, pos0); // Store the distances to avoid recalculating
ll dist90 = dis(i, pos90);
ll dist270 = dis(i, pos270);
ll dist180 = dis(i, pos180);
if (first) {
res = make_tuple(mi, i, pos0, 0, e);
res1 = make_tuple(mi1, i, pos90, 1, e);
res2 = make_tuple(mi2, i, pos270, 2, e);
res3 = make_tuple(mi3 + 1, i, pos180, 3, e);
first = false;
}
// Update minimum distances and results
if (dist0 < mi) {
mi = dist0;
res = make_tuple(mi, i, pos0, 0, e);
}
if (dist90 < mi1) {
mi1 = dist90;
res1 = make_tuple(mi1, i, pos90, 1, e);
}
if (dist270 < mi2) {
mi2 = dist270;
res2 = make_tuple(mi2, i, pos270, 2, e);
}
if (dist180 < mi3) {
mi3 = dist180;
res3 = make_tuple(mi3 + 1, i, pos180, 3, e);
}
// Early exit if the minimum distance is zero
if (mi == 0) break;
}
return make_tuple(res, res1, res2, res3);
}
void grab_and_release() {
vector<ll> grabs;
for (auto e : empty) {
auto pos0 = pos[e];
auto pos90 = rotate90(pos0, pos[par[e]]);
auto pos270 = rotate270(pos0, pos[par[e]]);
if (s.find(pos0) != s.end()) {
grabs.push_back(e);
s.erase(pos0);
} else if (s.find(pos90) != s.end()) {
rotate(e, true);
grabs.push_back(e);
s.erase(pos90);
} else if (s.find(pos270) != s.end()) {
rotate(e, false);
grabs.push_back(e);
s.erase(pos270);
} else {
}
}
for (auto e : grabs) {
grab(e);
}
vector<ll> releases;
for (auto e : have) {
auto pos0 = pos[e];
auto pos90 = rotate90(pos0, pos[par[e]]);
auto pos270 = rotate270(pos0, pos[par[e]]);
if (t.find(pos0) != t.end()) {
releases.push_back(e);
t.erase(pos0);
} else if (t.find(pos90) != t.end()) {
rotate(e, true);
releases.push_back(e);
t.erase(pos90);
} else if (t.find(pos270) != t.end()) {
rotate(e, false);
releases.push_back(e);
t.erase(pos270);
} else {
}
}
for (auto e : releases) {
release(e);
}
}
bool prioritize_pick = true;
bool move_tree() {
if (have.size() == 0) prioritize_pick = true;
pair<ll, ll> near = {-1, -1};
pair<ll, ll> from = {-1, -1};
prioritize_pick = prioritize_pick && s.size() > 0 && empty.size() > 0;
set<tuple<ll, pair<ll, ll>, pair<ll, ll>, ll, ll>> cost_pair_nanila;
if (s.size() > 0) {
for (auto e : empty) {
auto [r1, r2, r3, r4] = nearest(e, true);
cost_pair_nanila.insert(r1);
cost_pair_nanila.insert(r2);
cost_pair_nanila.insert(r3);
cost_pair_nanila.insert(r4);
}
}
if (t.size() > 0) {
for (auto e : have) {
auto [r1, r2, r3, r4] = nearest(e, false);
cost_pair_nanila.insert(r1);
cost_pair_nanila.insert(r2);
cost_pair_nanila.insert(r3);
cost_pair_nanila.insert(r4);
}
}
// bool find = false;
if (cost_pair_nanila.size() == 0) {
cerr << "no_found" << endl;
return false;
}
for (auto e : cost_pair_nanila) {
auto [cost, pair, ff, kaiten, node] = e;
// if (min_score != 0) cerr << "node:" << node << endl;
if (!inrange(pair.first - ff.first + pos[0].first,
pair.second - ff.second + pos[0].second))
continue;
near = pair;
if (kaiten == 1) {
rotate(node, true);
} else if (kaiten == 2) {
rotate(node, false);
} else if (kaiten == 3) {
rotate(node, false);
rotate(node, false);
}
from = pos[node];
break;
}
// if(find)
// if (min_score != 0) {
// cerr << from.first << " from " << from.second << endl;
// cerr << near.first << " near " << near.second << endl;
// cerr << empty.size() << " " << have.size() << " " << s.size() << " "
// << t.size() << endl;
// }
// cerr << "start move" << endl;
if (near.first - from.first > 0) {
move('D');
return true;
} else if (near.first - from.first < 0) {
move('U');
return true;
} else if (near.second - from.second > 0) {
move('R');
return true;
} else if (near.second - from.second < 0) {
move('L');
return true;
} else {
return false;
}
}
ll out = 0;
// 小さいほうがいい
// ll score_value() { return t.size() + s.size() + (ll)history.size(); }
ll score_value() {
if (ng) {
return 10000000;
} else {
return t.size() + s.size() + (ll)history.size();
}
}
void step0() {
if ((ll)history.size() > min_score || out > 10) {
ng = true;
return;
}
if (t.size() == 0) return;
if (ng) return;
grab_and_release();
}
void step1() {
if (t.size() == 0) return;
if (ng) return;
if (!move_tree()) {
out++;
} else {
out = 0;
}
}
void tujituma(){
ll index = 0;
vector<Ope> ne;
while(index<(ll)history.size()){
auto target = history[index];
// 何かを掴む処理をしている
if(target.grab){
index++;
ne.push_back(target);
continue;
}
ll now = index;
vector<Ope> oo;
pair<ll,ll> idou = {0,0};
// rootは数えない
// ddd['R'] = 1;
// ddd['L'] = 2;
// ddd['U'] = 3;
// ddd['D'] = 4;
vector<ll> rota((ll)pos.size()-1, 4000);
while(now<(ll)history.size()){
auto cur = history[now];
if(history[now].grab==0){
now++;
if(cur.dir==1){
idou.second++;
}else if(cur.dir==2){
idou.second--;
}else if(cur.dir==3){
idou.first++;
}else if(cur.dir==4){
idou.first--;
}
for(ll ii = 0;ii<(ll)pos.size()-1;ii++){
if(cur.rotateR &(1<<ii)){
rota[ii]++;
}
if(cur.rotateL &(1<<ii)){
rota[ii]--;
}
}
}else{
if(cur.dir==1){
idou.second++;
}else if(cur.dir==2){
idou.second--;
}else if(cur.dir==3){
idou.first++;
}else if(cur.dir==4){
idou.first--;
}
for(ll ii = 0;ii<(ll)pos.size()-1;ii++){
if(cur.rotateR &(1<<ii)){
rota[ii]++;
}
if(cur.rotateL &(1<<ii)){
rota[ii]--;
}
}
break;
}
}
while(true){
Ope co;
co.dir = 0;
co.rotateR = 0;
co.rotateL = 0;
co.grab = 0;
bool nochange=false;
if(idou.first>0){
co.dir = 3;
idou.first--;
}else if(idou.first<0){
co.dir = 4;
idou.first++;
}else if(idou.second>0){
co.dir = 1;
idou.second--;
}else if(idou.second<0){
co.dir = 2;
idou.second++;
}else{
nochange=true;
}
for(ll ii =0;ii<(ll)pos.size()-1;ii++){
if(rota[ii]%4==3){
nochange=false;
co.rotateL += 1<<ii;
rota[ii]=0;
}else if(rota[ii]%4==2){
rota[ii]=1;
nochange=false;
co.rotateR += 1<<ii;
}else if(rota[ii]%4==1){
rota[ii]=0;
nochange=false;
co.rotateR += 1<<ii;
}
}
if(nochange)break;
ne.push_back(co);
}
ne.back().grab = history[now].grab;
index = now+1;
}
history = ne;
}
};
const ll TRIAL = 15;
ll SAKI = 2;
void solve_tree(Tree &tree) {
tree.step0();
ll count = 0;
while (tree.t.size() > 0 && !tree.ng) {
count++;
ll mi = 1000000000;
Tree next = tree;
if(count%50==0){
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
// cerr<<duration<<endl;
if(duration>2800){
tree.ng = true;
return;
}
}
for (ll i = 0; i < TRIAL; i++) {
Tree temp = tree;
Tree temp1;
for (ll j = 0; j < SAKI; j++) {
if (temp.t.size() == 0 || temp.ng) break;
for (auto &&e : temp.fushi) {
if (randInt(1, 100) < 33) {
temp.rotate(e, true);
} else if (randInt(1, 100) < 33) {
temp.rotate(e, false);
}
}
temp.step1();
temp.step0();
if(j==0){
temp1 = temp;
}
}
if (mi > temp.score_value()) {
mi = temp.score_value();
next =temp1;
}
}
tree = next;
}
}
const bool DEBUG = false;
signed main() {
ddd['R'] = 1;
ddd['L'] = 2;
ddd['U'] = 3;
ddd['D'] = 4;
start = std::chrono::high_resolution_clock::now();
std::cin >> n >> m >> v;
for (int i = 0; i < n; i++) {
string S;
std::cin >> S;
for (int j = 0; j < n; j++) {
if (S[j] == '1') {
s.insert({i, j});
}
}
}
for (int i = 0; i < n; i++) {
string S;
std::cin >> S;
for (int j = 0; j < n; j++) {
if (S[j] == '1') {
if (s.find({i, j}) != s.end()) {
s.erase({i, j});
} else {
t.insert({i, j});
}
}
}
}
if(t.size()>=250){
SAKI=3;
}
Tree ans;
vector<ll> length(v - 1);
vector<ll> parent(v - 1);
for (ll i = 0; i < v - 1; i++) {
length[i] = n / 2 + i / 4;
// if (i > v / 2) {
// parent[i] = 1;
// }
}
pair<ll, ll> initPos = {n / 2, n / 2};
ans.build(initPos, v, length, parent, s, t);
solve_tree(ans);
ll score = ans.ans_size();
// ll score = 1000000;
for (ll i = 0; i < 10000000; i++) {
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
// cerr<<duration<<endl;
if(duration>2800){
break;
}
// if (true) {
// auto end = std::chrono::high_resolution_clock::now();
// auto duration =
// std::chrono::duration_cast<std::chrono::milliseconds>(end - start)
// .count();
// cerr<<duration<<endl;
// if (duration > 2500) {
// // cerr << "i: " << i << endl;
// break;
// }
// }
auto mpos = initPos;
auto ml = length;
auto mp = parent;
for (ll j = 0; j < v - 1; j++) {
// if (randInt(0, 100) < 80) {
length[j] = randInt(1, n * 2 / 3);
// }
// if (randInt(0, 100) < 80) {
// if (i % 2 == 0) {
// parent[j] = 0;
// } else {
// parent[j] = randInt(0, min((int)j, (int)1));
// parent[j] = min((int)j, (int)1);
// if(j<v/4){
// parent[j] = j;
// }else{
// parent[j] = min((int)j, (int)v / 4);
// }
// if (i % 2 == 0) {
parent[j] = min((int)j, (int)v / 3);
// } else {
// parent[j] = randInt(0, min(0, (int)j));
// }
// }
}
// if (randInt(0, 100) < 80) {
initPos = {min(n - 1, max(0, n / 2 + randInt(-20, 20))),
min(n - 1, max(0, n / 2 + randInt(-20, 20)))};
// }
Tree tree;
tree.build(initPos, v, length, parent, s, t);
solve_tree(tree);
ll tmp_score = tree.ans_size();
// cerr << tmp_score << endl;
if (tmp_score < score) {
score = tmp_score;
ans = tree;
if (DEBUG) cerr << "#";
} else {
if (DEBUG) cerr << ".";
initPos = mpos;
length = ml;
parent = mp;
}
}
if (DEBUG) cerr << endl;
ans.output();
};
Submission Info
Submission Time |
|
Task |
A - Tree Robot Arm |
User |
erbowl |
Language |
C++ 23 (gcc 12.2) |
Score |
7071 |
Code Size |
21229 Byte |
Status |
AC |
Exec Time |
2825 ms |
Memory |
4000 KiB |
Judge Result
Set Name |
test_ALL |
Score / Max Score |
7071 / 50000000000 |
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 |
Case Name |
Status |
Exec Time |
Memory |
test_0000.txt |
AC |
2809 ms |
3852 KiB |
test_0001.txt |
AC |
2819 ms |
3884 KiB |
test_0002.txt |
AC |
2807 ms |
3652 KiB |
test_0003.txt |
AC |
2813 ms |
3756 KiB |
test_0004.txt |
AC |
2814 ms |
3748 KiB |
test_0005.txt |
AC |
2817 ms |
3796 KiB |
test_0006.txt |
AC |
2808 ms |
3848 KiB |
test_0007.txt |
AC |
2809 ms |
3824 KiB |
test_0008.txt |
AC |
2804 ms |
3792 KiB |
test_0009.txt |
AC |
2811 ms |
3708 KiB |
test_0010.txt |
AC |
2825 ms |
3896 KiB |
test_0011.txt |
AC |
2805 ms |
3708 KiB |
test_0012.txt |
AC |
2804 ms |
3736 KiB |
test_0013.txt |
AC |
2816 ms |
3832 KiB |
test_0014.txt |
AC |
2807 ms |
3936 KiB |
test_0015.txt |
AC |
2809 ms |
3796 KiB |
test_0016.txt |
AC |
2806 ms |
3724 KiB |
test_0017.txt |
AC |
2816 ms |
3820 KiB |
test_0018.txt |
AC |
2814 ms |
3728 KiB |
test_0019.txt |
AC |
2819 ms |
3868 KiB |
test_0020.txt |
AC |
2805 ms |
3640 KiB |
test_0021.txt |
AC |
2806 ms |
3884 KiB |
test_0022.txt |
AC |
2808 ms |
3620 KiB |
test_0023.txt |
AC |
2810 ms |
3712 KiB |
test_0024.txt |
AC |
2805 ms |
3620 KiB |
test_0025.txt |
AC |
2822 ms |
3792 KiB |
test_0026.txt |
AC |
2806 ms |
3608 KiB |
test_0027.txt |
AC |
2806 ms |
3728 KiB |
test_0028.txt |
AC |
2804 ms |
3832 KiB |
test_0029.txt |
AC |
2807 ms |
3900 KiB |
test_0030.txt |
AC |
2815 ms |
4000 KiB |
test_0031.txt |
AC |
2812 ms |
3776 KiB |
test_0032.txt |
AC |
2807 ms |
3708 KiB |
test_0033.txt |
AC |
2817 ms |
3740 KiB |
test_0034.txt |
AC |
2810 ms |
3716 KiB |
test_0035.txt |
AC |
2804 ms |
3772 KiB |
test_0036.txt |
AC |
2803 ms |
3716 KiB |
test_0037.txt |
AC |
2809 ms |
3792 KiB |
test_0038.txt |
AC |
2807 ms |
3816 KiB |
test_0039.txt |
AC |
2824 ms |
3848 KiB |
test_0040.txt |
AC |
2806 ms |
3808 KiB |
test_0041.txt |
AC |
2807 ms |
3732 KiB |
test_0042.txt |
AC |
2810 ms |
3900 KiB |
test_0043.txt |
AC |
2808 ms |
3672 KiB |
test_0044.txt |
AC |
2804 ms |
3844 KiB |
test_0045.txt |
AC |
2805 ms |
3956 KiB |
test_0046.txt |
AC |
2814 ms |
3760 KiB |
test_0047.txt |
AC |
2804 ms |
3656 KiB |
test_0048.txt |
AC |
2813 ms |
3860 KiB |
test_0049.txt |
AC |
2805 ms |
3696 KiB |