Submission #1002049

#TimeUsernameProblemLanguageResultExecution timeMemory
1002049vjudge1Robots (APIO13_robots)C++17
Compilation error
0 ms0 KiB
//#pragma GCC optimize ("O3") //#pragma GCC target ("sse4") #include <bits/stdc++.h> #define ll long long #define ld long double #define ull unsigned long long #define pb push_back #define pob pop_back #define int long long #define int2 __int128_t #define Shrek_Crush228 ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); #define F first #define S second #define sz size() #define FOR( i, x, n, d ) for( int i = x; i <= n; i += d ) #define FORR( i, x, n, d ) for( int i = x; i >= n; i -= d ) #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define no cout << "NO\n" #define yes cout << "YES\n" #define nep next_permutation #define sigma signed #define pii pair <int, int> using namespace std; string alp = "abcdefghijklmnopqrstuvwxyz"; string ae = "aoeiuy"; string nums = "123456789"; const int N = 3e5 + 123; const int inf = 1e18; const int MOD = 1e9 + 7; const int MOD1 = 998244353; int a[N], b[N], c[N], d[N], l, r, n, k, m, w, cur, cnt, res, sum, sum1, x, y, ans, ans1, mx = -inf, mn = inf, ind, ind1, pref[N], suf[N]; string s, s1; struct RT { int sum, l, r, ind; }; int gcd( int a, int b ) { return ( b ? gcd( b, a % b ) : a ); } int lcm( int a, int b ) { return a / gcd( a, b ) * b; } int bp( int a, int b, int m ) { if( !b ) return 1; if( b & 1 ) return bp( a, b - 1, m ) * a % m; int it = bp( a, b >> 1, m ); return it * it % m; } struct po { int v1, v2, v3; }; char maze[505][505]; int used[505][505]; pii to_left( int x, int y ) { if( maze[x][y] == 'A' ) return to_down( x, y ); if( maze[x][y] == 'C' ) return to_up( x, y ); if( maze[x][y - 1] == 'x' || y - 1 < 1 ) return { x, y }; return to_left( x, y - 1 ); } pii to_right( int x, int y ) { if( maze[x][y] == 'A' ) return to_up( x, y ); if( maze[x][y] == 'C' ) return to_down( x, y ); if( maze[x][y + 1] == 'x' || y + 1 > m ) return { x, y }; return to_right( x, y + 1 ); } pii to_up( int x, int y ) { if( maze[x][y] == 'A' ) return to_left( x, y ); if( maze[x][y] == 'C' ) return to_right( x, y ); if( maze[x - 1][y] == 'x' || x - 1 < 1 ) return { x, y }; return to_up( x - 1, y ); } pii to_down( int x, int y ) { if( maze[x][y] == 'A' ) return to_rigth( x, y ); if( maze[x][y] == 'C' ) return to_left( x, y ); if( maze[x + 1][y] == 'x' || x + 1 > n ) return { x, y }; return to_down( x + 1, y ); } void get( int xn, int yn, int xst, int yst, int dist ) { if( used[xn][yn] < dist ) return; if( xn == xst && yn == yst ) { ans = min( ans, dist ); return; } used[xn][yn] = dist; int xl, yl, xr, yr, xu, yu, xd, yd, okl = 0, okr = 0, oku = 0, okd = 0; tie( xl, yl ) = to_left( xn, yn ); tie( xr, yr ) = to_right( xn, yn ); tie( xu, yu ) = to_up( xn, yn ); tie( xd, yd ) = to_down( xn, yn ); get( xl, yl, xst, yst, dist + 1 ); get( xr, yr, xst, yst, dist + 1 ); get( xu, yu, xst, yst, dist + 1 ); get( xd, yd, xst, yst, dist + 1 ); } void clean() { FOR( i, 0, n + 1, 1 ) { FOR( j, 0, m + 1, 1 ) used[i][j] = inf; } } void solve() { cin >> k >> n >> m; int x1, y1, x2, y2; FOR( i, 1, n, 1 ) { FOR( j, 1, m, 1 ) { cin >> maze[i][j]; if( maze[i][j] == '1' ) x1 = i, y1 = j; if( maze[i][j] == '2' ) x2 = i, y2 = j; } } ans = 1e9; pii L = to_left( x2, y2 ), R = to_right( x2, y2 ), U = to_up( x2, y2 ), D = to_down( x2, y2 ); clean(); get( x1, y1, L.F, L.S, 1 ); clean(); get( x1, y1, R.F, R.S, 1 ); clean(); get( x1, y1, U.F, U.S, 1 ); clean(); get( x1, y1, D.F, D.S, 1 ); clean(); get( x1, y1, x2, y2, 0 ); cout << ( ans == 1e9 ? -1 : ans ); } sigma main() { //freopen("haircut.in", "r", stdin); //freopen("haircut.out", "w", stdout); Shrek_Crush228 int test = 1; if( !test ) cin >> test; while( test -- ) { solve(); } } //// solved by KluydQ /* 1......... AA.x4..... ..A..x.... 2....x.... ..C.3.A... */

Compilation message (stderr)

robots.cpp: In function 'std::pair<long long int, long long int> to_left(long long int, long long int)':
robots.cpp:71:33: error: 'to_down' was not declared in this scope
   71 |  if( maze[x][y] == 'A' ) return to_down( x, y );
      |                                 ^~~~~~~
robots.cpp:72:33: error: 'to_up' was not declared in this scope
   72 |  if( maze[x][y] == 'C' ) return to_up( x, y );
      |                                 ^~~~~
robots.cpp: In function 'std::pair<long long int, long long int> to_right(long long int, long long int)':
robots.cpp:78:33: error: 'to_up' was not declared in this scope
   78 |  if( maze[x][y] == 'A' ) return to_up( x, y );
      |                                 ^~~~~
robots.cpp:79:33: error: 'to_down' was not declared in this scope
   79 |  if( maze[x][y] == 'C' ) return to_down( x, y );
      |                                 ^~~~~~~
robots.cpp: In function 'std::pair<long long int, long long int> to_down(long long int, long long int)':
robots.cpp:92:33: error: 'to_rigth' was not declared in this scope; did you mean 'to_right'?
   92 |  if( maze[x][y] == 'A' ) return to_rigth( x, y );
      |                                 ^~~~~~~~
      |                                 to_right
robots.cpp: In function 'void get(long long int, long long int, long long int, long long int, long long int)':
robots.cpp:107:38: warning: unused variable 'okl' [-Wunused-variable]
  107 |  int xl, yl, xr, yr, xu, yu, xd, yd, okl = 0, okr = 0, oku = 0, okd = 0;
      |                                      ^~~
robots.cpp:107:47: warning: unused variable 'okr' [-Wunused-variable]
  107 |  int xl, yl, xr, yr, xu, yu, xd, yd, okl = 0, okr = 0, oku = 0, okd = 0;
      |                                               ^~~
robots.cpp:107:56: warning: unused variable 'oku' [-Wunused-variable]
  107 |  int xl, yl, xr, yr, xu, yu, xd, yd, okl = 0, okr = 0, oku = 0, okd = 0;
      |                                                        ^~~
robots.cpp:107:65: warning: unused variable 'okd' [-Wunused-variable]
  107 |  int xl, yl, xr, yr, xu, yu, xd, yd, okl = 0, okr = 0, oku = 0, okd = 0;
      |                                                                 ^~~