Submission #63337953
Source Code Expand
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
#include<chrono>
using namespace std;
template<class T> struct cLtraits_identity{
using type = T;
}
;
template<class T> using cLtraits_try_make_unsigned =
typename conditional<
is_integral<T>::value,
make_unsigned<T>,
cLtraits_identity<T>
>::type;
void*wmem;
char memarr[96000000];
template<class S, class T> inline S chmin(S &a, T b){
if(a>b){
a=b;
}
return a;
}
template<class S, class T> inline S chmax(S &a, T b){
if(a<b){
a=b;
}
return a;
}
template<class S, class T> inline S divup_L(S a, T b){
return (a+b-1)/b;
}
template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
(*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
(*arr)=(T*)(*mem);
(*mem)=((*arr)+x);
}
template<class T> inline void walloc1d(T **arr, int x1, int x2, void **mem = &wmem){
walloc1d(arr, x2-x1, mem);
(*arr) -= x1;
}
inline int Ilog2_f_L(const int n){
int res;
if(n <= 0){
return -1;
}
res = sizeof(int) * 8 - __builtin_clz(n) - 1;
return res;
}
inline int Ilog2_f_L(const long long n){
int res;
if(n <= 0){
return -1;
}
res = sizeof(long long) * 8 - __builtin_clzll(n) - 1;
return res;
}
template<class T1> void sortI(int N, T1 a[], void *mem = wmem){
sort(a, a+N);
}
template<class T1, class T2> void sortI(int N, T1 a[], T2 b[], void *mem = wmem){
int i;
pair<T1, T2>*arr;
walloc1d(&arr, N, &mem);
for(i=(0);i<(N);i++){
arr[i].first = a[i];
arr[i].second = b[i];
}
sort(arr, arr+N);
for(i=(0);i<(N);i++){
a[i] = arr[i].first;
b[i] = arr[i].second;
}
}
template<class T1, class T2, class T3> void sortI(int N, T1 a[], T2 b[], T3 c[], void *mem = wmem){
int i;
pair<T1, pair<T2, T3> >*arr;
walloc1d(&arr, N, &mem);
for(i=(0);i<(N);i++){
arr[i].first = a[i];
arr[i].second.first = b[i];
arr[i].second.second = c[i];
}
sort(arr, arr+N);
for(i=(0);i<(N);i++){
a[i] = arr[i].first;
b[i] = arr[i].second.first;
c[i] = arr[i].second.second;
}
}
template<class T1, class T2, class T3, class T4> void sortI(int N, T1 a[], T2 b[], T3 c[], T4 d[], void *mem = wmem){
int i;
pair<pair<T1, T2>, pair<T3, T4> >*arr;
walloc1d(&arr, N, &mem);
for(i=(0);i<(N);i++){
arr[i].first.first = a[i];
arr[i].first.second = b[i];
arr[i].second.first = c[i];
arr[i].second.second = d[i];
}
sort(arr, arr+N);
for(i=(0);i<(N);i++){
a[i] = arr[i].first.first;
b[i] = arr[i].first.second;
c[i] = arr[i].second.first;
d[i] = arr[i].second.second;
}
}
template<class T> inline int sort_helper_getbit(T A[]){
return -1;
}
template<> inline int sort_helper_getbit(int A[]){
return sizeof(int)*8;
}
template<> inline int sort_helper_getbit(unsigned A[]){
return sizeof(unsigned)*8;
}
template<> inline int sort_helper_getbit(long long A[]){
return sizeof(long long)*8;
}
template<> inline int sort_helper_getbit(unsigned long long A[]){
return sizeof(unsigned long long)*8;
}
template<> inline int sort_helper_getbit(char A[]){
return sizeof(char)*8;
}
template<class T> void sortA_1_int_L(int N, T A[], void *mem = wmem){
int i;
int j;
int k;
int b;
int s;
int ok;
ok = 1;
for(i=(1);i<(N);i++){
if(A[i-1] > A[i]){
ok = 0;
break;
}
}
if(ok){
return;
}
if(N < 128){
sort(A,A+N);
return;
}
b = sort_helper_getbit(A);
if(b==-1){
sort(A,A+N);
return;
}
T mn;
T mx;
mn = mx = A[0];
for(i=(1);i<(N);i++){
chmin(mn, A[i]);
}
for(i=(1);i<(N);i++){
chmax(mx, A[i]);
}
ok = 1;
if(mn < 0 && mx > 0 && (mn < -N || mx > N)){
ok = 0;
}
if(ok && mx - mn > N){
ok = 0;
}
if(ok){
int*tmp;
walloc1d(&tmp, mx-mn+1, &mem);
for(i=(0);i<(mx-mn+1);i++){
tmp[i] = 0;
}
for(i=(0);i<(N);i++){
tmp[A[i]-mn]++;
}
k = 0;
for(i=(0);i<(mx-mn+1);i++){
while(tmp[i] > 0){
tmp[i]--;
A[k++] = i+mn;
}
}
return;
}
{
typename make_unsigned<T>::type *t[2];
typename make_unsigned<T>::type mask;
typename make_unsigned<T>::type cur;
typename make_unsigned<T>::type one = 1;
T tone = 1;
int*pos;
int nn = 0;
int ss;
s =Ilog2_f_L(N);
if(s > 8){
s = (8 + (s-7)/2);
}
ss = 1;
for(;;){
if(ss >= b){
break;
}
if( mx >= 0 && (tone << (ss-1)) < mx ){
ss++;
continue;
}
if( mn < 0 && -(tone << (ss-1)) >= mn ){
ss++;
continue;
}
break;
}
k =(divup_L(ss,s));
s =(divup_L(ss,k));
mask = 0;
for(i=(0);i<(b);i++){
if(i < s*k){
mask |= one << i;
}
}
t[0] = (typename make_unsigned<T>::type *) A;
walloc1d(&t[1], N, &mem);
walloc1d(&pos, (1<<s)+1, &mem);
for(j=(0);j<(k);j++){
cur = 0;
for(i=(0);i<(b);i++){
if(s*j <= i && i < s*(j+1) && i < b){
cur |= one << i;
}
}
for(i=(0);i<((1<<s)+1);i++){
pos[i] = 0;
}
for(i=(0);i<(N);i++){
pos[((t[nn][i]&cur)>>(s*j))+1]++;
}
for(i=(0);i<((1<<s));i++){
pos[i+1] += pos[i];
}
for(i=(0);i<(N);i++){
t[nn^1][pos[(t[nn][i]&cur)>>(s*j)]++] = t[nn][i];
}
nn ^= 1;
mask ^= cur;
}
if(mn < 0 && mx >= 0){
k = 0;
for(i=(0);i<(N);i++){
if(A[i] < 0){
k++;
}
}
for(i=(0);i<(k);i++){
t[nn^1][i] = t[nn][N-k+i];
}
for(i=(k);i<(N);i++){
t[nn^1][i] = t[nn][i-k];
}
nn ^= 1;
}
if(nn==1){
for(i=(0);i<(N);i++){
t[0][i] = t[1][i];
}
}
return;
}
sort(A, A+N);
}
template<class T> void sortA_1_nonint_L(int N, T A[], void *mem = wmem){
sort(A,A+N);
}
template<class T> void sortA_1_call_L(int N, T A[], void *mem = wmem){
sortA_1_nonint_L(N, A, mem);
}
template<> void sortA_1_call_L(int N, int A[], void *mem){
sortA_1_int_L(N, A, mem);
}
template<> void sortA_1_call_L(int N, unsigned A[], void *mem){
sortA_1_int_L(N, A, mem);
}
template<> void sortA_1_call_L(int N, long long A[], void *mem){
sortA_1_int_L(N, A, mem);
}
template<> void sortA_1_call_L(int N, unsigned long long A[], void *mem){
sortA_1_int_L(N, A, mem);
}
template<> void sortA_1_call_L(int N, char A[], void *mem){
sortA_1_int_L(N, A, mem);
}
template<class T1> void sortA(int N, T1 a[], void *mem = wmem){
sortA_1_call_L(N, a, mem);
}
template<class T1, class T2> void sortA_2_int_L(int N, T1 A[], T2 B[], void *mem = wmem){
int i;
int b_a;
int b_b;
int s1;
int s2;
int so2;
T1 mn1;
T1 mx1;
T2 mn2;
T2 mx2;
typename cLtraits_try_make_unsigned<T1>::type r1;
typename cLtraits_try_make_unsigned<T2>::type r2;
so2 = 1;
for(i=(1);i<(N);i++){
if(A[i-1] > A[i] || (A[i-1]==A[i] && B[i-1] > B[i])){
so2 = 0;
break;
}
}
if(so2){
return;
}
so2 = 1;
for(i=(1);i<(N);i++){
if(A[i-1] > A[i]){
so2 = 0;
break;
}
}
if(so2==1){
int k = 0;
for(i=(1);i<(N);i++){
if(A[i] != A[i-1]){
sortA_1_call_L(i-k, B+k, mem);
k = i;
}
}
sortA_1_call_L(N-k, B+k, mem);
return;
}
if(N < 128){
sortI(N,A,B,mem);
return;
}
b_a = sort_helper_getbit(A);
b_b = sort_helper_getbit(B);
if(b_a == -1 || b_b == -1){
sortI(N,A,B,mem);
return;
}
mn1 = mx1 = A[0];
for(i=(1);i<(N);i++){
chmin(mn1, A[i]);
}
for(i=(1);i<(N);i++){
chmax(mx1, A[i]);
}
mn2 = mx2 = B[0];
for(i=(1);i<(N);i++){
chmin(mn2, B[i]);
}
for(i=(1);i<(N);i++){
chmax(mx2, B[i]);
}
if(mn1 < -4611686016279904256LL || mn2 < -4611686016279904256LL || mx1 > 4611686016279904256LL || mx2 > 4611686016279904256LL || mx1-mn1 > 4611686016279904256LL || mx2-mn2 > 4611686016279904256LL){
sortI(N,A,B,mem);
return;
}
r1 = (typename cLtraits_try_make_unsigned<T1>::type)(mx1) - (typename cLtraits_try_make_unsigned<T1>::type)(mn1);
r2 = (typename cLtraits_try_make_unsigned<T2>::type)(mx2) - (typename cLtraits_try_make_unsigned<T2>::type)(mn2);
if(r1 == 0){
sortA_1_call_L(N, B, mem);
return;
}
if(r2 == 0){
sortA_1_call_L(N, A, mem);
return;
}
if(r1 <= N){
so2 = 1;
for(i=(1);i<(N);i++){
if(B[i-1] > B[i]){
so2 = 0;
break;
}
}
if(so2 == 1){
T1*aa;
T2*bb;
int*pos;
int k;
walloc1d(&aa,N,&mem);
walloc1d(&bb,N,&mem);
walloc1d(&pos,r1+2,&mem);
for(i=(0);i<(r1+2);i++){
pos[i] = 0;
}
for(i=(0);i<(N);i++){
aa[i] = A[i];
}
for(i=(0);i<(N);i++){
bb[i] = B[i];
}
for(i=(0);i<(N);i++){
pos[(typename cLtraits_try_make_unsigned<T1>::type)((typename cLtraits_try_make_unsigned<T1>::type)aa[i]-(typename cLtraits_try_make_unsigned<T1>::type)mn1)+1]++;
}
for(i=(1);i<(r1+2);i++){
pos[i] += pos[i-1];
}
for(i=(0);i<(N);i++){
k = pos[(typename cLtraits_try_make_unsigned<T1>::type)((typename cLtraits_try_make_unsigned<T1>::type)aa[i]-(typename cLtraits_try_make_unsigned<T1>::type)mn1)+0]++;
A[k] = aa[i];
B[k] = bb[i];
}
return;
}
}
s1 = s2 = 1;
while( s1 < 64 && r1 >= (1ULL<<s1) ){
s1++;
}
while( s2 < 64 && r2 >= (1ULL<<s2) ){
s2++;
}
if(s1 + s2 <= 32){
unsigned*tmp;
walloc1d(&tmp,N,&mem);
for(i=(0);i<(N);i++){
tmp[i] = (((unsigned)((int)A[i]-(int)mn1)) << s2) | ((unsigned)((int)B[i]-(int)mn2));
}
sortA_1_call_L(N, tmp, mem);
for(i=(0);i<(N);i++){
A[i] = ((int)(tmp[i] >> s2)) + ((int)mn1);
B[i] = ((int)(tmp[i] & ((1U<<s2)-1))) + ((int)mn2);
}
return;
}
if(s1 + s2 <= 64){
unsigned long long*tmp;
walloc1d(&tmp,N,&mem);
for(i=(0);i<(N);i++){
tmp[i] = (((unsigned long long)((long long)A[i]-(long long)mn1)) << s2) | ((unsigned long long)((long long)B[i]-(long long)mn2));
}
sortA_1_call_L(N, tmp, mem);
for(i=(0);i<(N);i++){
A[i] = ((long long)(tmp[i] >> s2)) + ((long long)mn1);
B[i] = ((long long)(tmp[i] & ((1ULL<<s2)-1))) + ((long long)mn2);
}
return;
}
sortI(N,A,B,mem);
}
template<class T1, class T2> void sortA_2_nonint_L(int N, T1 A[], T2 B[], void *mem = wmem){
sortI(N,A,B,mem);
}
template<class T1, class T2> void sortA_2_call_L(int N, T1 A[], T2 B[], void *mem = wmem){
sortA_2_nonint_L(N, A, B, mem);
}
template<class T2> void sortA_2_call_L(int N, int A[], T2 B[], void *mem){
sortA_2_int_L(N, A, B, mem);
}
template<class T2> void sortA_2_call_L(int N, unsigned A[], T2 B[], void *mem){
sortA_2_int_L(N, A, B, mem);
}
template<class T2> void sortA_2_call_L(int N, long long A[], T2 B[], void *mem){
sortA_2_int_L(N, A, B, mem);
}
template<class T2> void sortA_2_call_L(int N, unsigned long long A[], T2 B[], void *mem){
sortA_2_int_L(N, A, B, mem);
}
template<class T2> void sortA_2_call_L(int N, char A[], T2 B[], void *mem){
sortA_2_int_L(N, A, B, mem);
}
template<class T1, class T2> void sortA(int N, T1 a[], T2 b[], void *mem = wmem){
sortA_2_call_L(N, a, b, mem);
}
template<class T1, class T2, class T3> void sortA(int N, T1 a[], T2 b[], T3 c[], void *mem = wmem){
int i;
pair<T1, pair<T2, T3> >*arr;
walloc1d(&arr, N, &mem);
for(i=(0);i<(N);i++){
arr[i].first = a[i];
arr[i].second.first = b[i];
arr[i].second.second = c[i];
}
sort(arr, arr+N);
for(i=(0);i<(N);i++){
a[i] = arr[i].first;
b[i] = arr[i].second.first;
c[i] = arr[i].second.second;
}
}
template<class T1, class T2, class T3, class T4> void sortA(int N, T1 a[], T2 b[], T3 c[], T4 d[], void *mem = wmem){
int i;
pair<pair<T1, T2>, pair<T3, T4> >*arr;
walloc1d(&arr, N, &mem);
for(i=(0);i<(N);i++){
arr[i].first.first = a[i];
arr[i].first.second = b[i];
arr[i].second.first = c[i];
arr[i].second.second = d[i];
}
sort(arr, arr+N);
for(i=(0);i<(N);i++){
a[i] = arr[i].first.first;
b[i] = arr[i].first.second;
c[i] = arr[i].second.first;
d[i] = arr[i].second.second;
}
}
struct Timer2{
std::chrono::time_point<std::chrono::high_resolution_clock> start_time;
void set(void){
start_time = std::chrono::high_resolution_clock::now();
}
double get(void){
auto end_time = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time);
return duration.count() * 1e-6;
}
}
;
struct Rand{
unsigned x;
unsigned y;
unsigned z;
unsigned w;
Rand(void){
x=123456789;
y=362436069;
z=521288629;
w=(unsigned)time(NULL);
}
Rand(unsigned seed){
x=123456789;
y=362436069;
z=521288629;
w=seed;
}
inline unsigned get(void){
unsigned t;
t = (x^(x<<11));
x=y;
y=z;
z=w;
w = (w^(w>>19))^(t^(t>>8));
return w;
}
inline double getUni(void){
return get()/4294967296.0;
}
inline int get(int a){
return (int)(a*getUni());
}
inline int get(int a, int b){
return a+(int)((b-a+1)*getUni());
}
inline long long get(long long a){
return(long long)(a*getUni());
}
inline long long get(long long a, long long b){
return a+(long long)((b-a+1)*getUni());
}
inline double get(double a, double b){
return a+(b-a)*getUni();
}
inline int getExp(int a){
return(int)(exp(getUni()*log(a+1.0))-1.0);
}
inline int getExp(int a, int b){
return a+(int)(exp(getUni()*log((b-a+1)+1.0))-1.0);
}
}
;
inline int my_getchar_unlocked(){
static char buf[1048576];
static int s = 1048576;
static int e = 1048576;
if(s == e && e == 1048576){
e = fread_unlocked(buf, 1, 1048576, stdin);
s = 0;
}
if(s == e){
return EOF;
}
return buf[s++];
}
inline void rd(int &x){
int k;
int m=0;
x=0;
for(;;){
k = my_getchar_unlocked();
if(k=='-'){
m=1;
break;
}
if('0'<=k&&k<='9'){
x=k-'0';
break;
}
}
for(;;){
k = my_getchar_unlocked();
if(k<'0'||k>'9'){
break;
}
x=x*10+k-'0';
}
if(m){
x=-x;
}
}
inline void rd(char &c){
int i;
for(;;){
i = my_getchar_unlocked();
if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){
break;
}
}
c = i;
}
inline int rd(char c[]){
int i;
int sz = 0;
for(;;){
i = my_getchar_unlocked();
if(i!=' '&&i!='\n'&&i!='\r'&&i!='\t'&&i!=EOF){
break;
}
}
c[sz++] = i;
for(;;){
i = my_getchar_unlocked();
if(i==' '||i=='\n'||i=='\r'||i=='\t'||i==EOF){
break;
}
c[sz++] = i;
}
c[sz]='\0';
return sz;
}
struct MY_WRITER{
char buf[1048576];
int s;
int e;
MY_WRITER(){
s = 0;
e = 1048576;
}
~MY_WRITER(){
if(s){
fwrite_unlocked(buf, 1, s, stdout);
}
}
}
;
MY_WRITER MY_WRITER_VAR;
void my_putchar_unlocked(int a){
if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){
fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);
MY_WRITER_VAR.s = 0;
}
MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;
}
template<class T> inline void wt_L(const vector<T> &x);
template<class T> inline void wt_L(const set<T> &x);
template<class T> inline void wt_L(const multiset<T> &x);
template<class T1, class T2> inline void wt_L(const pair<T1,T2> x);
inline void wt_L(const char a){
my_putchar_unlocked(a);
}
inline void wt_L(int x){
int s=0;
int m=0;
char f[10];
if(x<0){
m=1;
x=-x;
}
while(x){
f[s++]=x%10;
x/=10;
}
if(!s){
f[s++]=0;
}
if(m){
my_putchar_unlocked('-');
}
while(s--){
my_putchar_unlocked(f[s]+'0');
}
}
inline void wt_L(const char c[]){
int i=0;
for(i=0;c[i]!='\0';i++){
my_putchar_unlocked(c[i]);
}
}
template<class S> inline void arrInsert(const int k, int &sz, S a[], const S aval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i] = a[i-1];
}
a[k] = aval;
}
template<class S, class T> inline void arrInsert(const int k, int &sz, S a[], const S aval, T b[], const T bval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i] = a[i-1];
}
for(i=sz-1;i>k;i--){
b[i] = b[i-1];
}
a[k] = aval;
b[k] = bval;
}
template<class S, class T, class U> inline void arrInsert(const int k, int &sz, S a[], const S aval, T b[], const T bval, U c[], const U cval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i] = a[i-1];
}
for(i=sz-1;i>k;i--){
b[i] = b[i-1];
}
for(i=sz-1;i>k;i--){
c[i] = c[i-1];
}
a[k] = aval;
b[k] = bval;
c[k] = cval;
}
template<class S, class T, class U, class V> inline void arrInsert(const int k, int &sz, S a[], const S aval, T b[], const T bval, U c[], const U cval, V d[], const V dval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i] = a[i-1];
}
for(i=sz-1;i>k;i--){
b[i] = b[i-1];
}
for(i=sz-1;i>k;i--){
c[i] = c[i-1];
}
for(i=sz-1;i>k;i--){
d[i] = d[i-1];
}
a[k] = aval;
b[k] = bval;
c[k] = cval;
d[k] = dval;
}
const int LOCAL = 0;
const int TEST_CASE = 30;
const double TL = 1.99;
Timer2 timer;
Rand rnd;
int N;
int M;
char A[20][20];
char dirstr[6] = "UDLR";
int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};
int ress;
int resa[1000000];
int resd[1000000];
int tmps;
int tmpa[1000000];
int tmpd[1000000];
inline int calc_dist(int x1, int y1, int x2, int y2){
return abs(x1-x2) + abs(y1-y2);
}
inline int calc_id(vector<vector<int>> &mp, int &cx, int &cy, int x[], int y[], int a, int b){
int i;
int j;
int t;
int res = a;
int d = 1073709056;
for(i=(a);i<(b);i++){
if(x[i] < 0){
continue;
}
t = calc_dist(cx, cy, x[i], y[i]);
if(d > t){
d = t;
res= i;
}
}
return res;
}
inline int calc_dir(vector<vector<int>> &mp, int &cx, int &cy, int id, int type, int x[], int y[], int dir){
int i;
int j;
int k;
int hx;
int hy;
int d = 1073709056;
int di;
int t;
int ddx;
int ddy;
int res = 0;
if(dir==-4){
return calc_dir(mp, cx, cy, id, type, x, y, -1)^1;
}
if(dir==-5){
return calc_dir(mp, cx, cy, id, type, x, y, -2)^1;
}
if(dir==-6){
return calc_dir(mp, cx, cy, id, type, x, y, -3)^1;
}
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(mp[i][j]==-2){
if(type != -1 && A[i][j] != 'A'+type){
continue;
}
t = calc_dist(i,j,x[id],y[id]);
if(d > t){
d = t;
hx = i;
hy = j;
}
}
}
}
ddx = hx - i;
ddy = hy - j;
if(dir == -1){
ddy = 0;
}
if(dir == -2){
ddx = 0;
}
di = 0;
for(d=(0);d<(4);d++){
t = ddx * dx[d] + ddy * dy[d];
if(t > di){
di = t;
res = d;
}
}
return res;
}
int my_move(vector<vector<int>> &mp, int &cx, int &cy, int dir){
int nx;
int ny;
nx = cx + dx[dir];
ny = cy + dy[dir];
if(nx < 0 || ny < 0 || nx >= N || ny >= N){
return 0;
}
arrInsert(tmps,tmps,tmpa,1,tmpd,dir);
cx = nx;
cy = ny;
return 1;
}
int my_move(vector<vector<int>> &mp, int &cx, int &cy, int tx, int ty){
int d;
int nx;
int ny;
for(d=(0);d<(4);d++){
for(;;){
nx = cx + dx[d];
ny = cy + dy[d];
if(nx < 0 || ny < 0 || nx >= N || ny >= N || abs(cx-tx)+abs(cy-ty) <= abs(nx-tx)+abs(ny-ty)){
break;
}
my_move(mp, cx, cy, d);
}
}
return 1;
}
int id_move(vector<vector<int>> &mp, int &cx, int &cy, int id, int type, int x[], int y[], int dir){
int rx;
int ry;
int nx;
int ny;
rx = x[id];
ry = y[id];
if(rx < 0){
return 0;
}
nx = rx + dx[dir];
ny = ry + dy[dir];
if(nx < 0 || ny < 0 || nx >= N || ny >= N){
return 0;
}
if(mp[nx][ny] >= 0){
return 0;
}
if(mp[nx][ny] == -2 && (type != -1 && A[nx][ny] != 'A'+type)){
return 0;
}
my_move(mp, cx, cy, rx, ry);
arrInsert(tmps,tmps,tmpa,2,tmpd,dir);
cx = nx;
cy = ny;
mp[rx][ry] = -1;
if(mp[nx][ny] != -2){
mp[nx][ny] = id;
x[id] = nx;
y[id] = ny;
}
else{
x[id] = y[id] = -1;
}
return 1;
}
int id_roll(vector<vector<int>> &mp, int &cx, int &cy, int id, int type, int x[], int y[], int dir){
int i;
int j;
int k;
int sx;
int sy;
int nx;
int ny;
int tnx;
int tny;
int valid = 1;
nx = sx = x[id];
ny = sy = y[id];
if(sx < 0){
return 0;
}
for(;;){
tnx = nx + dx[dir];
tny = ny + dy[dir];
if(tnx < 0 || tny < 0 || tnx >= N || tny >= N){
break;
}
if(mp[tnx][tny] >= 0){
break;
}
if(mp[tnx][tny] == -2){
if(type==-1 || A[tnx][tny]=='A'+type){
nx = tnx;
ny = tny;
break;
}
return 0;
}
nx = tnx;
ny = tny;
}
if(nx == sx && ny == sy){
return 0;
}
my_move(mp, cx, cy, sx, sy);
arrInsert(tmps,tmps,tmpa,3,tmpd,dir);
mp[sx][sy] = -1;
if(mp[nx][ny] != -2){
mp[nx][ny] = id;
x[id] = nx;
y[id] = ny;
}
else{
x[id] = y[id] = -1;
}
return 1;
}
int id_fall(vector<vector<int>> &mp, int &cx, int &cy, int id, int type, int x[], int y[]){
int d;
int i;
int j;
int k;
int hx;
int hy;
int dist;
int t;
int px;
int py;
int sx;
int sy;
int nx;
int ny;
int ddx;
int ddy;
static int ds[20][20];
static int q[400];
static int qs;
static int qe;
dist = 1073709056;
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(mp[i][j] == -2){
if(type != -1 && A[i][j] != 'A'+type){
continue;
}
t = abs(i - x[id]) + abs(j - y[id]);
if(dist > t){
dist = t;
hx = i;
hy = j;
}
}
}
}
if(dist == 1073709056){
return 0;
}
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
ds[i][j] = 1073709056;
}
}
ds[hx][hy] = 0;
qs = qe = 0;
q[qe++] = hx*N+hy;
for(d=(0);d<(4);d++){
for(i=(1);i<(N);i++){
nx = hx + dx[d] * i;
ny = hy + dy[d] * i;
if(nx < 0 || ny < 0 || nx >= N || ny >= N){
break;
}
if( (!(nx==x[id] && ny==y[id])) && mp[nx][ny] != -1 ){
break;
}
ds[nx][ny] = 0;
q[qe++] = nx*N+ny;
}
}
while(qs < qe){
t = q[qs++];
sx = t/N;
sy = t%N;
for(d=(0);d<(4);d++){
nx = sx + dx[d];
ny = sy + dy[d];
if(0 <= nx && nx < N && 0 <= ny && ny < N && ds[nx][ny] == 1073709056){
if( (!(nx==x[id] && ny==y[id])) && mp[nx][ny] != -1 ){
continue;
}
ds[nx][ny] = ds[sx][sy] + 1;
q[qe++] = nx * N + ny;
}
}
}
if(ds[x[id]][y[id]] == 1073709056){
return 0;
}
while(x[id] >= 0){
sx = x[id];
sy = y[id];
if(ds[sx][sy] == 0){
ddx = hx - sx;
ddy = hy - sy;
for(d=(0);d<(4);d++){
if(ddx * dx[d] + ddy * dy[d] > 0){
id_roll(mp, cx, cy, id, type, x, y, d);
break;
}
}
continue;
}
for(d=(0);d<(4);d++){
nx = sx + dx[d];
ny = sy + dy[d];
if(0 <= nx && nx < N && 0 <= ny && ny < N && ds[nx][ny] < ds[sx][sy]){
break;
}
}
assert(d < 4);
id_move(mp, cx, cy, id, type, x, y, d);
}
return x[id] < 0;
}
int calc(int sz, int obj[], int com[], int cdi[]){
int i;
int j;
int k;
int ok = 0;
int n_crystal[M] = {};
int n_c = 0;
int n_rock = 0;
int hx[M];
int hy[M];
int cx;
int cy;
int id;
int nx;
int ny;
static int x[1000000];
static int y[1000000];
static int type[1000000];
vector<vector<int>> mp(N, vector<int>(N));
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
mp[i][j] = -1;
}
}
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(A[i][j] == 'A'){
cx = i;
cy = j;
}
}
}
for(k=(0);k<(M);k++){
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(A[i][j] == 'A' + k){
mp[i][j] = -2;
hx[k] = i;
hy[k] = j;
}
}
}
}
id = 0;
for(k=(0);k<(M);k++){
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(A[i][j] == 'a' + k){
n_c++;
n_crystal[k]++;
mp[i][j] = id;
x[id] = i;
y[id] = j;
type[id] = k;
id++;
}
}
}
}
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(A[i][j] == '@'){
n_rock++;
mp[i][j] = id;
x[id] = i;
y[id] = j;
type[id] = -1;
id++;
}
}
}
tmps = 0;
for(k=(0);k<(sz);k++){
for(i=(0);i<(id);i++){
if(x[i] >= 0 && type[i] >= 0){
break;
}
}
if(i==id){
ok = 1;
break;
}
if(obj[k] == -1){
my_move(mp, cx, cy, cdi[k]);
}
else{
int s_id;
int s_type;
int s_dir;
s_id = obj[k];
if(s_id == -20 && n_rock == 0){
s_id = -10;
}
if(s_id == -10){
s_id = calc_id(mp, cx, cy, x, y, 0, n_c);
}
if(s_id == -20){
s_id = calc_id(mp, cx, cy, x, y, n_c, n_c+n_rock);
}
if(s_id == -30){
s_id = calc_id(mp, cx, cy, x, y, 0, n_c+n_rock);
}
s_type = type[s_id];
s_dir = cdi[k];
if(s_dir < 0){
s_dir = calc_dir(mp, cx, cy, s_id, s_type, x, y, s_dir);
}
if(com[k]==0){
id_fall(mp, cx, cy, s_id, s_type, x, y);
}
if(com[k]==1){
id_move(mp, cx, cy, s_id, s_type, x, y, s_dir);
}
if(com[k]==2){
id_roll(mp, cx, cy, s_id, s_type, x, y, s_dir);
}
}
}
if(!ok){
int jHgOtDlD;
for(jHgOtDlD=(0);jHgOtDlD<(20);jHgOtDlD++){
for(k=(0);k<(id);k++){
if(x[k] >= 0 && type[k] >= 0){
id_fall(mp, cx, cy, k, type[k], x, y);
}
}
for(i=(0);i<(id);i++){
if(x[i] >= 0 && type[i] >= 0){
break;
}
}
if(i==id){
ok = 1;
break;
}
}
}
if(!ok){
int H_Qz1srm;
for(H_Qz1srm=(0);H_Qz1srm<(20);H_Qz1srm++){
for(k=(0);k<(id);k++){
if(x[k] >= 0){
id_fall(mp, cx, cy, k, type[k], x, y);
}
}
for(i=(0);i<(id);i++){
if(x[i] >= 0 && type[i] >= 0){
break;
}
}
if(i==id){
ok = 1;
break;
}
}
}
if(ok && ress > tmps){
ress = tmps;
for(i=(0);i<(ress);i++){
resa[i] = tmpa[i];
}
for(i=(0);i<(ress);i++){
resd[i] = tmpd[i];
}
}
if(!ok){
return 1000000;
}
return tmps;
}
double solver(){
timer.set();
ress = 100000;
rd(N);
rd(M);
{
int X085YO4R;
int QcZ5MdGu;
for(X085YO4R=(0);X085YO4R<(N);X085YO4R++){
for(QcZ5MdGu=(0);QcZ5MdGu<(N);QcZ5MdGu++){
rd(A[X085YO4R][QcZ5MdGu]);
}
}
}
int i;
int j;
int k;
int id;
int n_crystal[M] = {};
int n_rock = 0;
int n_c = 0;
double score;
double p;
double q;
int tmp_cost;
int nx_cost;
static int sz;
static int obj[1000000];
static int com[1000000];
static int cdi[1000000];
static int ind[1000000];
static int mem_obj[1000000];
static int mem_com[1000000];
static int mem_cdi[1000000];
for(k=(0);k<(M);k++){
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(A[i][j] == 'a' + k){
n_crystal[k]++;
n_c++;
}
}
}
}
for(i=(0);i<(N);i++){
for(j=(0);j<(N);j++){
if(A[i][j] == '@'){
n_rock++;
}
}
}
sz = 0;
id = 0;
for(k=(0);k<(M);k++){
for(j=(0);j<(n_crystal[k]);j++){
for(i=(0);i<(20);i++){
arrInsert(sz, sz, obj, id, com, 0, cdi, -1);
}
for(i=(0);i<(1);i++){
arrInsert(sz, sz, obj, id, com, 1, cdi, rnd.get(4));
}
for(i=(0);i<(1);i++){
arrInsert(sz, sz, obj, id, com, 2, cdi, rnd.get(4));
}
id++;
}
}
for(j=(0);j<(n_rock);j++){
for(i=(0);i<(1);i++){
arrInsert(sz, sz, obj, id, com, 0, cdi, -1);
}
for(i=(0);i<(1);i++){
arrInsert(sz, sz, obj, id, com, 1, cdi, rnd.get(4));
}
for(i=(0);i<(2);i++){
arrInsert(sz, sz, obj, id, com, 2, cdi, rnd.get(4));
}
id++;
}
for(k=(0);k<(n_c);k++){
for(i=(0);i<(20);i++){
arrInsert(sz, sz, obj, -10, com, 0, cdi, -1);
}
for(i=(0);i<(2);i++){
arrInsert(sz, sz, obj, -10, com, 1, cdi, rnd.get(-3,-1));
}
for(i=(0);i<(6);i++){
arrInsert(sz, sz, obj, -10, com, 2, cdi, rnd.get(-3,-1));
}
}
for(k=(0);k<(n_rock);k++){
for(i=(0);i<(1);i++){
arrInsert(sz, sz, obj, -20, com, 0, cdi, rnd.get(-3,-1));
}
for(i=(0);i<(1);i++){
arrInsert(sz, sz, obj, -20, com, 1, cdi, rnd.get(-3,-1));
}
for(i=(0);i<(4);i++){
arrInsert(sz, sz, obj, -20, com, 2, cdi, rnd.get(-3,-1));
}
}
for(k=(0);k<(n_c+n_rock);k++){
for(i=(0);i<(10);i++){
arrInsert(sz, sz, obj, -30, com, 0, cdi, -1);
}
}
for(i=(0);i<(sz);i++){
ind[i] = rnd.get(1000000000);
}
sortA(sz, ind, obj, com, cdi);
tmp_cost = calc(sz, obj, com, cdi);
for(;;){
int DQE7Sh4i;
double t;
t = (TL - timer.get()) / TL;
if(t < 0){
break;
}
for(i=(0);i<(sz);i++){
mem_obj[i] = obj[i];
mem_com[i] = com[i];
mem_cdi[i] = cdi[i];
}
int loop = 6;
if(t > 0.5){
loop = 30;
}
else if(t > 0.3){
loop = 12;
}
for(DQE7Sh4i=(0);DQE7Sh4i<(loop);DQE7Sh4i++){
p = rnd.getUni();
if(p < 0.3){
i = j = rnd.get(sz);
while(i == j){
j = rnd.get(sz);
}
swap(obj[i], obj[j]);
swap(com[i], com[j]);
swap(cdi[i], cdi[j]);
}
else if(p < 0.6){
i = rnd.get(sz);
if(obj[i] == -1){
i = rnd.get(sz);
}
if(obj[i] == -1){
continue;
}
q = rnd.getUni();
if(q < 0.3){
obj[i] = -10;
}
else if(q < 0.4){
obj[i] = -20;
}
else if(q < 0.7){
obj[i] = -30;
}
else if(q < 0.9){
obj[i] = rnd.get(n_c);
}
else if(q < 1.0){
obj[i] = rnd.get(n_c+n_rock);
}
}
else if(p < 0.7){
i = rnd.get(sz);
while(cdi[i] == -1){
i = rnd.get(sz);
}
if(obj[i] == -1){
cdi[i] = rnd.get(4);
}
if(obj[i] != -1){
cdi[i] = rnd.get(-3,3);
}
}
else{
i = rnd.get(sz);
q = rnd.getUni();
if(q < 0.0){
obj[i] = -1;
cdi[i] = rnd.get(4);
}
else if(q < 0.5){
obj[i] = rnd.get(n_c);
com[i] = 0;
cdi[i] = -1;
}
else if(q < 0.6){
obj[i] = rnd.get(n_c);
com[i] = 1;
cdi[i] = rnd.get(-3,3);
}
else if(q < 0.7){
obj[i] = rnd.get(n_c);
com[i] = 2;
cdi[i] = rnd.get(-3,3);
}
else if(q < 0.8 && n_rock > 0){
obj[i] = n_c + rnd.get(n_rock);
com[i] = 0;
cdi[i] = -1;
}
else if(q < 0.9 && n_rock > 0){
obj[i] = n_c + rnd.get(n_rock);
com[i] = 1;
cdi[i] = rnd.get(-3,3);
}
else if(q < 1.0 && n_rock > 0){
obj[i] = n_c + rnd.get(n_rock);
com[i] = 2;
cdi[i] = rnd.get(-3,3);
}
else{
}
}
}
nx_cost = calc(sz, obj, com, cdi);
if(nx_cost <= tmp_cost || exp( (nx_cost-tmp_cost) / t * 0.01 ) < rnd.getUni()){
tmp_cost = nx_cost;
}
else{
for(i=(0);i<(sz);i++){
obj[i] = mem_obj[i];
com[i] = mem_com[i];
cdi[i] = mem_cdi[i];
}
}
}
if(ress > 10000){
score = 0;
ress = 0;
}
else{
score = 1e6 * (1 + log(10000.0/ress) / log(2));
}
if(LOCAL==0){
for(i=(0);i<(ress);i++){
wt_L(resa[i]);
wt_L(' ');
wt_L(dirstr[resd[i]]);
wt_L('\n');
}
}
return score;
}
int main(){
wmem = memarr;
if(LOCAL){
int i;
double score = 0;
double s;
for(i=(0);i<(TEST_CASE);i++){
s = solver();
score += s;
fprintf(stderr, "CASE %d: %f: %f\n", i, s, score);
}
fprintf(stderr, "SCORE %f\n", score);
fprintf(stderr, "SCORE %f * 1e6 (150 cases)\n", score*150/1e6/TEST_CASE);
}
else{
double score;
score = solver();
fprintf(stderr, "SCORE %f\n", score);
}
return 0;
}
template<class T> inline void wt_L(const vector<T> &x){
int fg = 0;
for(auto a : x){
if(fg){
my_putchar_unlocked(' ');
}
fg = 1;
wt_L(a);
}
}
template<class T> inline void wt_L(const set<T> &x){
int fg = 0;
for(auto a : x){
if(fg){
my_putchar_unlocked(' ');
}
fg = 1;
wt_L(a);
}
}
template<class T> inline void wt_L(const multiset<T> &x){
int fg = 0;
for(auto a : x){
if(fg){
my_putchar_unlocked(' ');
}
fg = 1;
wt_L(a);
}
}
template<class T1, class T2> inline void wt_L(const pair<T1,T2> x){
wt_L(x.first);
my_putchar_unlocked(' ');
wt_L(x.second);
}
// cLay version 20250224-1
// --- original code ---
// const int LOCAL = 0;
// const int TEST_CASE = 30;
// const double TL = 1.99;
//
// Timer2 timer;
// Rand rnd;
//
// int N, M;
// char A[20][20];
//
// char dirstr[6] = "UDLR";
// int dx[4] = {-1,1,0,0}, dy[4] = {0,0,-1,1};
//
// int ress, resa[1d6], resd[1d6];
// int tmps, tmpa[1d6], tmpd[1d6];
//
//
// inline int calc_dist(int x1, int y1, int x2, int y2){
// return abs(x1-x2) + abs(y1-y2);
// }
//
//
// inline int calc_id(VVI &mp, int &cx, int &cy, int x[], int y[], int a, int b){
// int i, j, t, res = a, d = int_inf;
//
// rep(i,a,b){
// if(x[i] < 0) continue;
// t = calc_dist(cx, cy, x[i], y[i]);
// if(d > t) d = t, res= i;
// }
// return res;
// }
//
// inline int calc_dir(VVI &mp, int &cx, int &cy, int id, int type, int x[], int y[], int dir){
// int i, j, k;
// int hx, hy, d = int_inf, di, t, ddx, ddy, res = 0;
//
// if(dir==-4) return calc_dir(mp, cx, cy, id, type, x, y, -1)^1;
// if(dir==-5) return calc_dir(mp, cx, cy, id, type, x, y, -2)^1;
// if(dir==-6) return calc_dir(mp, cx, cy, id, type, x, y, -3)^1;
//
// rep(i,N) rep(j,N) if(mp[i][j]==-2){
// if(type != -1 && A[i][j] != 'A'+type) continue;
// t = calc_dist(i,j,x[id],y[id]);
// if(d > t) d = t, hx = i, hy = j;
// }
//
// ddx = hx - i;
// ddy = hy - j;
// if(dir == -1) ddy = 0;
// if(dir == -2) ddx = 0;
//
// di = 0;
// rep(d,4){
// t = ddx * dx[d] + ddy * dy[d];
// if(t > di) di = t, res = d;
// }
//
// return res;
// }
//
// int my_move(VVI &mp, int &cx, int &cy, int dir){
// int nx, ny;
// nx = cx + dx[dir];
// ny = cy + dy[dir];
// if(nx < 0 || ny < 0 || nx >= N || ny >= N) return 0;
//
// arrInsert(tmps,tmps,tmpa,1,tmpd,dir);
// cx = nx;
// cy = ny;
//
// return 1;
// }
//
// int my_move(VVI &mp, int &cx, int &cy, int tx, int ty){
// int d, nx, ny;
// rep(d,4){
// for(;;){
// nx = cx + dx[d];
// ny = cy + dy[d];
// if(nx < 0 || ny < 0 || nx >= N || ny >= N || abs(cx-tx)+abs(cy-ty) <= abs(nx-tx)+abs(ny-ty)) break;
// my_move(mp, cx, cy, d);
// }
// }
// return 1;
// }
//
// int id_move(VVI &mp, int &cx, int &cy, int id, int type, int x[], int y[], int dir){
// int rx, ry, nx, ny;
//
// rx = x[id];
// ry = y[id];
// if(rx < 0) return 0;
//
// nx = rx + dx[dir];
// ny = ry + dy[dir];
// if(nx < 0 || ny < 0 || nx >= N || ny >= N) return 0;
// if(mp[nx][ny] >= 0) return 0;
// if(mp[nx][ny] == -2 && (type != -1 && A[nx][ny] != 'A'+type)) return 0;
//
// my_move(mp, cx, cy, rx, ry);
//
// arrInsert(tmps,tmps,tmpa,2,tmpd,dir);
// cx = nx;
// cy = ny;
//
// mp[rx][ry] = -1;
// if(mp[nx][ny] != -2){
// mp[nx][ny] = id;
// x[id] = nx;
// y[id] = ny;
// } else {
// x[id] = y[id] = -1;
// }
// return 1;
// }
//
// int id_roll(VVI &mp, int &cx, int &cy, int id, int type, int x[], int y[], int dir){
// int i, j, k;
// int sx, sy, nx, ny, tnx, tny;
// int valid = 1;
//
// nx = sx = x[id];
// ny = sy = y[id];
// if(sx < 0) return 0;
//
// for(;;){
// tnx = nx + dx[dir];
// tny = ny + dy[dir];
// if(tnx < 0 || tny < 0 || tnx >= N || tny >= N) break;
// if(mp[tnx][tny] >= 0) break;
// if(mp[tnx][tny] == -2){
// if(type==-1 || A[tnx][tny]=='A'+type) nx = tnx, ny = tny, break;
// return 0;
// }
// nx = tnx; ny = tny;
// }
//
// if(nx == sx && ny == sy) return 0;
//
// my_move(mp, cx, cy, sx, sy);
//
// arrInsert(tmps,tmps,tmpa,3,tmpd,dir);
// mp[sx][sy] = -1;
// if(mp[nx][ny] != -2){
// mp[nx][ny] = id;
// x[id] = nx;
// y[id] = ny;
// } else {
// x[id] = y[id] = -1;
// }
//
// return 1;
// }
//
// int id_fall(VVI &mp, int &cx, int &cy, int id, int type, int x[], int y[]){
// int i, j, k;
// int hx, hy, dist, t, px, py, sx, sy, nx, ny, ddx, ddy;
// static int ds[20][20], q[400], qs, qe;
//
// dist = int_inf;
// rep(i,N) rep(j,N) if(mp[i][j] == -2){
// if(type != -1 && A[i][j] != 'A'+type) continue;
// t = abs(i - x[id]) + abs(j - y[id]);
// if(dist > t) dist = t, hx = i, hy = j;
// }
// if(dist == int_inf) return 0;
//
// rep(i,N) rep(j,N) ds[i][j] = int_inf;
// ds[hx][hy] = 0;
// qs = qe = 0;
// q[qe++] = hx*N+hy;
//
// rep(d,4) rep(i,1,N){
// nx = hx + dx[d] * i;
// ny = hy + dy[d] * i;
// if(nx < 0 || ny < 0 || nx >= N || ny >= N) break;
// if( (!(nx==x[id] && ny==y[id])) && mp[nx][ny] != -1 ) break;
// ds[nx][ny] = 0;
// q[qe++] = nx*N+ny;
// }
//
// while(qs < qe){
// t = q[qs++];
// sx = t/N;
// sy = t%N;
// rep(d,4){
// nx = sx + dx[d];
// ny = sy + dy[d];
// if(0 <= nx < N && 0 <= ny < N && ds[nx][ny] == int_inf){
// if( (!(nx==x[id] && ny==y[id])) && mp[nx][ny] != -1 ) continue;
// ds[nx][ny] = ds[sx][sy] + 1;
// q[qe++] = nx * N + ny;
// }
// }
// }
// if(ds[x[id]][y[id]] == int_inf) return 0;
//
// while(x[id] >= 0){
// sx = x[id];
// sy = y[id];
// if(ds[sx][sy] == 0){
// ddx = hx - sx;
// ddy = hy - sy;
// rep(d,4){
// if(ddx * dx[d] + ddy * dy[d] > 0){
// id_roll(mp, cx, cy, id, type, x, y, d);
// break;
// }
// }
// continue;
// }
// rep(d,4){
// nx = sx + dx[d];
// ny = sy + dy[d];
// if(0 <= nx < N && 0 <= ny < N && ds[nx][ny] < ds[sx][sy]) break;
// }
// assert(d < 4);
// id_move(mp, cx, cy, id, type, x, y, d);
// }
//
// return x[id] < 0;
// }
//
// int calc(int sz, int obj[], int com[], int cdi[]){
// int i, j, k, ok = 0;
// int n_crystal[M] = {}, n_c = 0, n_rock = 0;
//
// int hx[M], hy[M];
// int cx, cy, id, nx, ny;
// static int x[1d6], y[1d6], type[1d6];
// VVI mp(N, VI(N));
//
// rep(i,N) rep(j,N) mp[i][j] = -1;
// rep(i,N) rep(j,N) if(A[i][j] == 'A') cx = i, cy = j;
// rep(k,M) rep(i,N) rep(j,N) if(A[i][j] == 'A' + k) mp[i][j] = -2, hx[k] = i, hy[k] = j;
//
// // wt("--cx", cx,cy);
//
// id = 0;
// rep(k,M) rep(i,N) rep(j,N) if(A[i][j] == 'a' + k){
// n_c++;
// n_crystal[k]++;
// mp[i][j] = id;
// x[id] = i;
// y[id] = j;
// type[id] = k;
// id++;
// }
// rep(i,N) rep(j,N) if(A[i][j] == '@'){
// n_rock++;
// mp[i][j] = id;
// x[id] = i;
// y[id] = j;
// type[id] = -1;
// id++;
// }
//
//
// tmps = 0;
// rep(k,sz){
//
// rep(i,id) if(x[i] >= 0 && type[i] >= 0) break;
// if(i==id) ok = 1, break;
//
// if(obj[k] == -1){
// my_move(mp, cx, cy, cdi[k]);
// } else {
// int s_id, s_type, s_dir;
// s_id = obj[k];
// if(s_id == -20 && n_rock == 0) s_id = -10;
// if(s_id == -10) s_id = calc_id(mp, cx, cy, x, y, 0, n_c);
// if(s_id == -20) s_id = calc_id(mp, cx, cy, x, y, n_c, n_c+n_rock);
// if(s_id == -30) s_id = calc_id(mp, cx, cy, x, y, 0, n_c+n_rock);
// s_type = type[s_id];
// s_dir = cdi[k];
// if(s_dir < 0) s_dir = calc_dir(mp, cx, cy, s_id, s_type, x, y, s_dir);
// if(com[k]==0) id_fall(mp, cx, cy, s_id, s_type, x, y);
// if(com[k]==1) id_move(mp, cx, cy, s_id, s_type, x, y, s_dir);
// if(com[k]==2) id_roll(mp, cx, cy, s_id, s_type, x, y, s_dir);
// }
// }
//
// if(!ok){
// rep(20){
// rep(k,id) if(x[k] >= 0 && type[k] >= 0){
// id_fall(mp, cx, cy, k, type[k], x, y);
// }
// rep(i,id) if(x[i] >= 0 && type[i] >= 0) break;
// if(i==id) ok = 1, break;
// }
// }
//
// if(!ok){
// rep(20){
// rep(k,id) if(x[k] >= 0){
// id_fall(mp, cx, cy, k, type[k], x, y);
// }
// rep(i,id) if(x[i] >= 0 && type[i] >= 0) break;
// if(i==id) ok = 1, break;
// }
// }
//
// // wt("---");
// // wt(mp(N,N));
//
// if(ok && ress > tmps){
// ress = tmps;
// rep(i,ress) resa[i] = tmpa[i];
// rep(i,ress) resd[i] = tmpd[i];
// }
//
// if(!ok) return 1000000;
// return tmps;
// }
//
// double solver(){
// timer.set();
// ress = 1d5;
//
// rd(N,M,A(N,N));
//
// int i, j, k, id;
// int n_crystal[M] = {}, n_rock = 0, n_c = 0;
// double score, p, q;
//
// int tmp_cost, nx_cost;
// static int sz, obj[1d6], com[1d6], cdi[1d6], ind[1d6];
// static int mem_obj[1d6], mem_com[1d6], mem_cdi[1d6];
//
// /*
// obj = -1 自分
// com = 1: 1マス移動
// obj = id 鉱石,岩
// com = 0: そこに移動して,1マス移動で穴に落とせるなら頑張って落とす
// com = 1: そこに移動して1マス移動
// com = 2: そこに移動して転がす
//
// dir = -1 : 穴の方向の縦
// dir = -2 : 穴の方向の横
// dir = -3 : 穴の方向の縦横遠い方
//
// obj = -10 : 近い鉱石
// obj = -20 : 近い岩
// obj = -30 : 近い鉱石か岩
// */
//
// rep(k,M) rep(i,N) rep(j,N) if(A[i][j] == 'a' + k) n_crystal[k]++, n_c++;
// rep(i,N) rep(j,N) if(A[i][j] == '@') n_rock++;
//
// sz = 0;
// // rep(i,10) arrInsert(sz, sz, obj, -1, com, 1, cdi, rnd.get(4));
//
// id = 0;
// rep(k,M) rep(j,n_crystal[k]){
// rep(i,20) arrInsert(sz, sz, obj, id, com, 0, cdi, -1);
// rep(i,1) arrInsert(sz, sz, obj, id, com, 1, cdi, rnd.get(4));
// rep(i,1) arrInsert(sz, sz, obj, id, com, 2, cdi, rnd.get(4));
// id++;
// }
// rep(j,n_rock){
// rep(i,1) arrInsert(sz, sz, obj, id, com, 0, cdi, -1);
// rep(i,1) arrInsert(sz, sz, obj, id, com, 1, cdi, rnd.get(4));
// rep(i,2) arrInsert(sz, sz, obj, id, com, 2, cdi, rnd.get(4));
// id++;
// }
// rep(k,n_c){
// rep(i,20) arrInsert(sz, sz, obj, -10, com, 0, cdi, -1);
// rep(i,2) arrInsert(sz, sz, obj, -10, com, 1, cdi, rnd.get(-3,-1));
// rep(i,6) arrInsert(sz, sz, obj, -10, com, 2, cdi, rnd.get(-3,-1));
// }
// rep(k,n_rock){
// rep(i,1) arrInsert(sz, sz, obj, -20, com, 0, cdi, rnd.get(-3,-1));
// rep(i,1) arrInsert(sz, sz, obj, -20, com, 1, cdi, rnd.get(-3,-1));
// rep(i,4) arrInsert(sz, sz, obj, -20, com, 2, cdi, rnd.get(-3,-1));
// }
// rep(k,n_c+n_rock){
// rep(i,10) arrInsert(sz, sz, obj, -30, com, 0, cdi, -1);
// }
// rep(i,sz) ind[i] = rnd.get(1d9);
// sortA(sz, ind, obj, com, cdi);
//
// tmp_cost = calc(sz, obj, com, cdi);
// for(;;){
// double t;
// t = (TL - timer.get()) / TL;
// if(t < 0) break;
//
// rep(i,sz){
// mem_obj[i] = obj[i];
// mem_com[i] = com[i];
// mem_cdi[i] = cdi[i];
// }
//
// int loop = 6;
// if(t > 0.5) loop = 30;
// else if(t > 0.3) loop = 12;
// rep(loop){
// p = rnd.getUni();
// if(p < 0.3){
// i = j = rnd.get(sz);
// while(i == j) j = rnd.get(sz);
// swap(obj[i], obj[j]);
// swap(com[i], com[j]);
// swap(cdi[i], cdi[j]);
// } else if(p < 0.6){
// i = rnd.get(sz);
// if(obj[i] == -1) i = rnd.get(sz);
// if(obj[i] == -1) continue;
// q = rnd.getUni();
// if(q < 0.3) obj[i] = -10;
// else if(q < 0.4) obj[i] = -20;
// else if(q < 0.7) obj[i] = -30;
// else if(q < 0.9) obj[i] = rnd.get(n_c);
// else if(q < 1.0) obj[i] = rnd.get(n_c+n_rock);
// } else if(p < 0.7){
// i = rnd.get(sz);
// while(cdi[i] == -1) i = rnd.get(sz);
// if(obj[i] == -1) cdi[i] = rnd.get(4);
// if(obj[i] != -1) cdi[i] = rnd.get(-3,3);
// } else {
// i = rnd.get(sz);
// q = rnd.getUni();
// if(q < 0.0){
// obj[i] = -1;
// cdi[i] = rnd.get(4);
// } else if(q < 0.5){
// obj[i] = rnd.get(n_c);
// com[i] = 0;
// cdi[i] = -1;
// } else if(q < 0.6){
// obj[i] = rnd.get(n_c);
// com[i] = 1;
// cdi[i] = rnd.get(-3,3);
// } else if(q < 0.7){
// obj[i] = rnd.get(n_c);
// com[i] = 2;
// cdi[i] = rnd.get(-3,3);
// } else if(q < 0.8 && n_rock > 0){
// obj[i] = n_c + rnd.get(n_rock);
// com[i] = 0;
// cdi[i] = -1;
// } else if(q < 0.9 && n_rock > 0){
// obj[i] = n_c + rnd.get(n_rock);
// com[i] = 1;
// cdi[i] = rnd.get(-3,3);
// } else if(q < 1.0 && n_rock > 0){
// obj[i] = n_c + rnd.get(n_rock);
// com[i] = 2;
// cdi[i] = rnd.get(-3,3);
// } else {
//
// }
// }
// }
//
// nx_cost = calc(sz, obj, com, cdi);
// if(nx_cost <= tmp_cost || exp( (nx_cost-tmp_cost) / t * 0.01 ) < rnd.getUni()){
// // fprintf(stderr, "%d -> %d\n", tmp_cost, nx_cost);
// tmp_cost = nx_cost;
// } else {
// rep(i,sz){
// obj[i] = mem_obj[i];
// com[i] = mem_com[i];
// cdi[i] = mem_cdi[i];
// }
// }
// }
//
// if(ress > 10000){
// score = 0;
// ress = 0;
// } else {
// score = 1e6 * (1 + log(10000.0/ress) / log(2));
// }
// if(LOCAL==0){
// rep(i,ress) wt(resa[i], dirstr[resd[i]]);
// }
// return score;
// }
//
// {
// if(LOCAL){
// int i;
// double score = 0, s;
// rep(i, TEST_CASE){
// s = solver();
// score += s;
// fprintf(stderr, "CASE %d: %f: %f\n", i, s, score);
// }
// fprintf(stderr, "SCORE %f\n", score);
// fprintf(stderr, "SCORE %f * 1e6 (150 cases)\n", score*150/1e6/TEST_CASE);
// } else {
// double score;
// score = solver();
// fprintf(stderr, "SCORE %f\n", score);
// }
// }
Submission Info
| Submission Time |
|
| Task |
B - Ore Rolling (B) |
| User |
LayCurse |
| Language |
C++ 23 (gcc 12.2) |
| Score |
743954959 |
| Code Size |
48754 Byte |
| Status |
AC |
| Exec Time |
1992 ms |
| Memory |
4424 KiB |
Compile Error
Main.cpp: In function ‘int sort_helper_getbit(T*) [with T = int]’:
Main.cpp:114:46: warning: unused parameter ‘A’ [-Wunused-parameter]
114 | template<> inline int sort_helper_getbit(int A[]){
| ~~~~^~~
Main.cpp: In function ‘int sort_helper_getbit(T*) [with T = unsigned int]’:
Main.cpp:117:51: warning: unused parameter ‘A’ [-Wunused-parameter]
117 | template<> inline int sort_helper_getbit(unsigned A[]){
| ~~~~~~~~~^~~
Main.cpp: In function ‘int sort_helper_getbit(T*) [with T = long long int]’:
Main.cpp:120:52: warning: unused parameter ‘A’ [-Wunused-parameter]
120 | template<> inline int sort_helper_getbit(long long A[]){
| ~~~~~~~~~~^~~
Main.cpp: In function ‘int sort_helper_getbit(T*) [with T = long long unsigned int]’:
Main.cpp:123:61: warning: unused parameter ‘A’ [-Wunused-parameter]
123 | template<> inline int sort_helper_getbit(unsigned long long A[]){
| ~~~~~~~~~~~~~~~~~~~^~~
Main.cpp: In function ‘int sort_helper_getbit(T*) [with T = char]’:
Main.cpp:126:47: warning: unused parameter ‘A’ [-Wunused-parameter]
126 | template<> inline int sort_helper_getbit(char A[]){
| ~~~~~^~~
Main.cpp: In function ‘int calc_id(std::vector<std::vector<int> >&, int&, int&, int*, int*, int, int)’:
Main.cpp:778:7: warning: unused variable ‘j’ [-Wunused-variable]
778 | int j;
| ^
Main.cpp:776:41: warning: unused parameter ‘mp’ [-Wunused-parameter]
776 | inline int calc_id(vector<vector<int>> &mp, int &cx, int &cy, int x[], int y[], int a, int b){
| ~~~~~~~~~~~~~~~~~~~~~^~
Main.cpp: In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’:
Main.cpp:797:7: warning: unused variable ‘k’ [-Wunused-variable]
797 | int k;
| ^
Main.cpp: In function ‘int my_move(std::vector<std::vector<int> >&, int&, int&, int)’:
Main.cpp:848:34: warning: unused parameter ‘mp’ [-Wunused-parameter]
848 | int my_move(vector<vector<int>> &mp, int &cx, int &cy, int dir){
| ~~~~~~~~~~~~~~~~~~~~~^~
Main.cpp: In function ‘int id_roll(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’:
Main.cpp:914:7: warning: unused variable ‘i’ [-Wunused-variable]
914 | int i;
| ^
Main.cpp:915:7: warning: unused variable ‘j’ [-Wunused-variable]
915 | int j;
| ^
Main.cpp:916:7: warning: unused variable ‘k’ [-Wunused-variable]
916 | int k;
| ^
Main.cpp:923:7: warning: unused variable ‘valid’ [-Wunused-variable]
923 | int valid = 1;
| ^~~~~
Main.cpp: In function ‘int id_fall(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*)’:
Main.cpp:969:7: warning: unused variable ‘k’ [-Wunused-variable]
969 | int k;
| ^
Main.cpp:974:7: warning: unused variable ‘px’ [-Wunused-variable]
974 | int px;
| ^~
Main.cpp:975:7: warning: unused variable ‘py’ [-Wunused-variable]
975 | int py;
| ^~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:1080:7: warning: variable ‘hx’ set but not used [-Wunused-but-set-variable]
1080 | int hx[M];
| ^~
Main.cpp:1081:7: warning: variable ‘hy’ set but not used [-Wunused-but-set-variable]
1081 | int hy[M];
| ^~
Main.cpp:1085:7: warning: unused variable ‘nx’ [-Wunused-variable]
1085 | int nx;
| ^~
Main.cpp:1086:7: warning: unused variable ‘ny’ [-Wunused-variable]
1086 | int ny;
| ^~
Main.cpp: In instantiation of ‘void sortA_1_int_L(int, T*, void*) [with T = unsigned int]’:
Main.cpp:284:16: required from here
Main.cpp:165:30: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]
165 | if(mn < 0 && mx > 0 && (mn < -N || mx > N)){
| ~~~^~~~
Main.cpp:165:41: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]
165 | if(mn < 0 && mx > 0 && (mn < -N || mx > N)){
| ~~~^~~
Main.cpp:168:20: warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]
168 | if(ok && mx - mn > N){
| ~~~~~~~~^~~
Main.cpp:174:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
174 | for(i=(0);i<(mx-mn+1);i++){
| ~^~~~~~~~~~
Main.cpp:181:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
181 | for(i=(0);i<(mx-mn+1);i++){
| ~^~~~~~~~~~
Main.cpp: In instantiation of ‘void sortA_1_int_L(int, T*, void*) [with T = long long unsigned int]’:
Main.cpp:290:16: required from here
Main.cpp:165:30: warning: comparison of integer expressions of different signedness: ‘long long unsigned int’ and ‘int’ [-Wsign-compare]
165 | if(mn < 0 && mx > 0 && (mn < -N || mx > N)){
| ~~~^~~~
Main.cpp:165:41: warning: comparison of integer expressions of different signedness: ‘long long unsigned int’ and ‘int’ [-Wsign-compare]
165 | if(mn < 0 && mx > 0 && (mn < -N || mx > N)){
| ~~~^~~
Main.cpp:168:20: warning: comparison of integer expressions of different signedness: ‘long long unsigned int’ and ‘int’ [-Wsign-compare]
168 | if(ok && mx - mn > N){
| ~~~~~~~~^~~
Main.cpp:174:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long long unsigned int’ [-Wsign-compare]
174 | for(i=(0);i<(mx-mn+1);i++){
| ~^~~~~~~~~~
Main.cpp:181:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long long unsigned int’ [-Wsign-compare]
181 | for(i=(0);i<(mx-mn+1);i++){
| ~^~~~~~~~~~
In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’,
inlined from ‘int calc(int, int*, int*, int*)’ at Main.cpp:1177:25:
Main.cpp:831:7: warning: ‘j’ may be used uninitialized [-Wmaybe-uninitialized]
831 | ddy = hy - j;
| ~~~~^~~~~~~~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:796:7: note: ‘j’ was declared here
796 | int j;
| ^
In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’,
inlined from ‘int calc(int, int*, int*, int*)’ at Main.cpp:1177:25:
Main.cpp:831:7: warning: ‘hy’ may be used uninitialized [-Wmaybe-uninitialized]
831 | ddy = hy - j;
| ~~~~^~~~~~~~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:799:7: note: ‘hy’ was declared here
799 | int hy;
| ^~
In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’,
inlined from ‘int calc(int, int*, int*, int*)’ at Main.cpp:1177:25:
Main.cpp:830:7: warning: ‘hx’ may be used uninitialized [-Wmaybe-uninitialized]
830 | ddx = hx - i;
| ~~~~^~~~~~~~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:798:7: note: ‘hx’ was declared here
798 | int hx;
| ^~
Main.cpp:840:13: warning: ‘hx’ may be used uninitialized [-Wmaybe-uninitialized]
840 | t = ddx * dx[d] + ddy * dy[d];
| ~~~~^~~~~~~
Main.cpp:798:7: note: ‘hx’ was declared here
798 | int hx;
| ^~
Main.cpp:831:7: warning: ‘j’ may be used uninitialized [-Wmaybe-uninitialized]
831 | ddy = hy - j;
| ~~~~^~~~~~~~
Main.cpp:796:7: note: ‘j’ was declared here
796 | int j;
| ^
Main.cpp:831:7: warning: ‘hy’ may be used uninitialized [-Wmaybe-uninitialized]
831 | ddy = hy - j;
| ~~~~^~~~~~~~
Main.cpp:799:7: note: ‘hy’ was declared here
799 | int hy;
| ^~
In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’,
inlined from ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’ at Main.cpp:810:20,
inlined from ‘int calc(int, int*, int*, int*)’ at Main.cpp:1177:25:
Main.cpp:831:7: warning: ‘j’ may be used uninitialized [-Wmaybe-uninitialized]
831 | ddy = hy - j;
| ~~~~^~~~~~~~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:796:7: note: ‘j’ was declared here
796 | int j;
| ^
In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’,
inlined from ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’ at Main.cpp:810:20,
inlined from ‘int calc(int, int*, int*, int*)’ at Main.cpp:1177:25:
Main.cpp:831:7: warning: ‘hy’ may be used uninitialized [-Wmaybe-uninitialized]
831 | ddy = hy - j;
| ~~~~^~~~~~~~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:799:7: note: ‘hy’ was declared here
799 | int hy;
| ^~
In function ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’,
inlined from ‘int calc_dir(std::vector<std::vector<int> >&, int&, int&, int, int, int*, int*, int)’ at Main.cpp:807:20,
inlined from ‘int calc(int, int*, int*, int*)’ at Main.cpp:1177:25:
Main.cpp:840:13: warning: ‘hx’ may be used uninitialized [-Wmaybe-uninitialized]
840 | t = ddx * dx[d] + ddy * dy[d];
| ~~~~^~~~~~~
Main.cpp: In function ‘int calc(int, int*, int*, int*)’:
Main.cpp:798:7: note: ‘hx’ was declared here
798 | int hx;
| ^~
Judge Result
| Set Name |
test_ALL |
| Score / Max Score |
743954959 / 1500000000 |
| 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 |
1991 ms |
4196 KiB |
| test_0001.txt |
AC |
1991 ms |
4320 KiB |
| test_0002.txt |
AC |
1991 ms |
4328 KiB |
| test_0003.txt |
AC |
1991 ms |
4348 KiB |
| test_0004.txt |
AC |
1991 ms |
4292 KiB |
| test_0005.txt |
AC |
1991 ms |
4200 KiB |
| test_0006.txt |
AC |
1991 ms |
4328 KiB |
| test_0007.txt |
AC |
1991 ms |
4360 KiB |
| test_0008.txt |
AC |
1991 ms |
4320 KiB |
| test_0009.txt |
AC |
1991 ms |
4360 KiB |
| test_0010.txt |
AC |
1992 ms |
4368 KiB |
| test_0011.txt |
AC |
1991 ms |
4368 KiB |
| test_0012.txt |
AC |
1991 ms |
4384 KiB |
| test_0013.txt |
AC |
1991 ms |
4412 KiB |
| test_0014.txt |
AC |
1991 ms |
4404 KiB |
| test_0015.txt |
AC |
1991 ms |
4328 KiB |
| test_0016.txt |
AC |
1991 ms |
4292 KiB |
| test_0017.txt |
AC |
1991 ms |
4408 KiB |
| test_0018.txt |
AC |
1991 ms |
4332 KiB |
| test_0019.txt |
AC |
1991 ms |
4364 KiB |
| test_0020.txt |
AC |
1991 ms |
4332 KiB |
| test_0021.txt |
AC |
1991 ms |
4328 KiB |
| test_0022.txt |
AC |
1991 ms |
4360 KiB |
| test_0023.txt |
AC |
1991 ms |
4316 KiB |
| test_0024.txt |
AC |
1992 ms |
4420 KiB |
| test_0025.txt |
AC |
1992 ms |
4328 KiB |
| test_0026.txt |
AC |
1991 ms |
4408 KiB |
| test_0027.txt |
AC |
1991 ms |
4320 KiB |
| test_0028.txt |
AC |
1991 ms |
4192 KiB |
| test_0029.txt |
AC |
1991 ms |
4324 KiB |
| test_0030.txt |
AC |
1991 ms |
4328 KiB |
| test_0031.txt |
AC |
1991 ms |
4284 KiB |
| test_0032.txt |
AC |
1991 ms |
4324 KiB |
| test_0033.txt |
AC |
1991 ms |
4300 KiB |
| test_0034.txt |
AC |
1991 ms |
4368 KiB |
| test_0035.txt |
AC |
1991 ms |
4376 KiB |
| test_0036.txt |
AC |
1991 ms |
4188 KiB |
| test_0037.txt |
AC |
1992 ms |
4268 KiB |
| test_0038.txt |
AC |
1991 ms |
4416 KiB |
| test_0039.txt |
AC |
1991 ms |
4408 KiB |
| test_0040.txt |
AC |
1991 ms |
4368 KiB |
| test_0041.txt |
AC |
1991 ms |
4372 KiB |
| test_0042.txt |
AC |
1991 ms |
4320 KiB |
| test_0043.txt |
AC |
1991 ms |
4288 KiB |
| test_0044.txt |
AC |
1991 ms |
4332 KiB |
| test_0045.txt |
AC |
1991 ms |
4364 KiB |
| test_0046.txt |
AC |
1991 ms |
4332 KiB |
| test_0047.txt |
AC |
1991 ms |
4328 KiB |
| test_0048.txt |
AC |
1991 ms |
4320 KiB |
| test_0049.txt |
AC |
1991 ms |
4340 KiB |
| test_0050.txt |
AC |
1991 ms |
4304 KiB |
| test_0051.txt |
AC |
1991 ms |
4300 KiB |
| test_0052.txt |
AC |
1992 ms |
4196 KiB |
| test_0053.txt |
AC |
1991 ms |
4288 KiB |
| test_0054.txt |
AC |
1991 ms |
4296 KiB |
| test_0055.txt |
AC |
1991 ms |
4324 KiB |
| test_0056.txt |
AC |
1991 ms |
4272 KiB |
| test_0057.txt |
AC |
1991 ms |
4324 KiB |
| test_0058.txt |
AC |
1991 ms |
4320 KiB |
| test_0059.txt |
AC |
1991 ms |
4360 KiB |
| test_0060.txt |
AC |
1991 ms |
4420 KiB |
| test_0061.txt |
AC |
1991 ms |
4312 KiB |
| test_0062.txt |
AC |
1991 ms |
4416 KiB |
| test_0063.txt |
AC |
1991 ms |
4356 KiB |
| test_0064.txt |
AC |
1991 ms |
4284 KiB |
| test_0065.txt |
AC |
1991 ms |
4284 KiB |
| test_0066.txt |
AC |
1992 ms |
4320 KiB |
| test_0067.txt |
AC |
1991 ms |
4296 KiB |
| test_0068.txt |
AC |
1991 ms |
4300 KiB |
| test_0069.txt |
AC |
1991 ms |
4196 KiB |
| test_0070.txt |
AC |
1991 ms |
4236 KiB |
| test_0071.txt |
AC |
1991 ms |
4288 KiB |
| test_0072.txt |
AC |
1991 ms |
4192 KiB |
| test_0073.txt |
AC |
1991 ms |
4288 KiB |
| test_0074.txt |
AC |
1991 ms |
4324 KiB |
| test_0075.txt |
AC |
1991 ms |
4372 KiB |
| test_0076.txt |
AC |
1991 ms |
4368 KiB |
| test_0077.txt |
AC |
1991 ms |
4372 KiB |
| test_0078.txt |
AC |
1991 ms |
4316 KiB |
| test_0079.txt |
AC |
1991 ms |
4316 KiB |
| test_0080.txt |
AC |
1991 ms |
4272 KiB |
| test_0081.txt |
AC |
1991 ms |
4272 KiB |
| test_0082.txt |
AC |
1991 ms |
4176 KiB |
| test_0083.txt |
AC |
1991 ms |
4360 KiB |
| test_0084.txt |
AC |
1991 ms |
4276 KiB |
| test_0085.txt |
AC |
1991 ms |
4300 KiB |
| test_0086.txt |
AC |
1991 ms |
4320 KiB |
| test_0087.txt |
AC |
1991 ms |
4296 KiB |
| test_0088.txt |
AC |
1991 ms |
4284 KiB |
| test_0089.txt |
AC |
1991 ms |
4204 KiB |
| test_0090.txt |
AC |
1991 ms |
4320 KiB |
| test_0091.txt |
AC |
1991 ms |
4292 KiB |
| test_0092.txt |
AC |
1991 ms |
4364 KiB |
| test_0093.txt |
AC |
1991 ms |
4364 KiB |
| test_0094.txt |
AC |
1992 ms |
4412 KiB |
| test_0095.txt |
AC |
1991 ms |
4328 KiB |
| test_0096.txt |
AC |
1991 ms |
4328 KiB |
| test_0097.txt |
AC |
1991 ms |
4328 KiB |
| test_0098.txt |
AC |
1991 ms |
4320 KiB |
| test_0099.txt |
AC |
1991 ms |
4372 KiB |
| test_0100.txt |
AC |
1992 ms |
4320 KiB |
| test_0101.txt |
AC |
1991 ms |
4404 KiB |
| test_0102.txt |
AC |
1991 ms |
4268 KiB |
| test_0103.txt |
AC |
1991 ms |
4328 KiB |
| test_0104.txt |
AC |
1991 ms |
4296 KiB |
| test_0105.txt |
AC |
1991 ms |
4416 KiB |
| test_0106.txt |
AC |
1991 ms |
4232 KiB |
| test_0107.txt |
AC |
1991 ms |
4412 KiB |
| test_0108.txt |
AC |
1991 ms |
4292 KiB |
| test_0109.txt |
AC |
1991 ms |
4324 KiB |
| test_0110.txt |
AC |
1991 ms |
4288 KiB |
| test_0111.txt |
AC |
1991 ms |
4416 KiB |
| test_0112.txt |
AC |
1992 ms |
4356 KiB |
| test_0113.txt |
AC |
1991 ms |
4240 KiB |
| test_0114.txt |
AC |
1991 ms |
4424 KiB |
| test_0115.txt |
AC |
1992 ms |
4280 KiB |
| test_0116.txt |
AC |
1992 ms |
4328 KiB |
| test_0117.txt |
AC |
1992 ms |
4300 KiB |
| test_0118.txt |
AC |
1991 ms |
4420 KiB |
| test_0119.txt |
AC |
1991 ms |
4320 KiB |
| test_0120.txt |
AC |
1991 ms |
4368 KiB |
| test_0121.txt |
AC |
1991 ms |
4320 KiB |
| test_0122.txt |
AC |
1991 ms |
4316 KiB |
| test_0123.txt |
AC |
1991 ms |
4284 KiB |
| test_0124.txt |
AC |
1991 ms |
4324 KiB |
| test_0125.txt |
AC |
1991 ms |
4420 KiB |
| test_0126.txt |
AC |
1992 ms |
4284 KiB |
| test_0127.txt |
AC |
1992 ms |
4300 KiB |
| test_0128.txt |
AC |
1991 ms |
4276 KiB |
| test_0129.txt |
AC |
1991 ms |
4372 KiB |
| test_0130.txt |
AC |
1991 ms |
4324 KiB |
| test_0131.txt |
AC |
1991 ms |
4288 KiB |
| test_0132.txt |
AC |
1991 ms |
4196 KiB |
| test_0133.txt |
AC |
1991 ms |
4324 KiB |
| test_0134.txt |
AC |
1992 ms |
4364 KiB |
| test_0135.txt |
AC |
1991 ms |
4284 KiB |
| test_0136.txt |
AC |
1991 ms |
4316 KiB |
| test_0137.txt |
AC |
1991 ms |
4372 KiB |
| test_0138.txt |
AC |
1991 ms |
4324 KiB |
| test_0139.txt |
AC |
1991 ms |
4372 KiB |
| test_0140.txt |
AC |
1991 ms |
4416 KiB |
| test_0141.txt |
AC |
1991 ms |
4296 KiB |
| test_0142.txt |
AC |
1991 ms |
4288 KiB |
| test_0143.txt |
AC |
1991 ms |
4328 KiB |
| test_0144.txt |
AC |
1991 ms |
4412 KiB |
| test_0145.txt |
AC |
1991 ms |
4308 KiB |
| test_0146.txt |
AC |
1991 ms |
4408 KiB |
| test_0147.txt |
AC |
1991 ms |
4280 KiB |
| test_0148.txt |
AC |
1991 ms |
4336 KiB |
| test_0149.txt |
AC |
1991 ms |
4292 KiB |