제출 #1307607

#제출 시각아이디문제언어결과실행 시간메모리
1307607I_am_Polish_GirlNavigation 2 (JOI21_navigation2)C++17
0 / 100
7 ms800 KiB
#include "Anna.h" #include <iostream> #include <vector> #include <algorithm> #include <map> #include <numeric> #include <set> #include <queue> using namespace std; namespace { } // namespace void Anna(int N, int K, std::vector<int> R, std::vector<int> C) { map<pair <int, int>, int> mp; int I = 1; for (int i = -2; i <= 2; i++) { for (int j = -2; j <= 2; j++) { if (abs(i) + abs(j) > 2) continue; mp[{i, j}] = I; I++; } } vector <vector <int>> u(3); u[0] = { 0 , 1 , 2 }; u[1] = { 3 , 4 , 5 }; u[2] = { 6 , -1 , -1 }; for (int r = 0; r < N; r++) { for (int c = 0; c < N; c++) { int r_ = r % 3; int c_ = c % 3; int x = u[r_][c_]; if (x == -1) { if (c_ == 1) SetFlag(r, c, 4); else SetFlag(r, c, 3); continue; } int i = R[x]; int j = C[x]; int d1 = i - r; int d2 = j - c; if (abs(d1) >= 2) { d1 /= abs(d1); d1 *= 2; SetFlag(r, c, mp[{d1, 0}]); continue; } if (abs(d2) >= 2) { d2 /= abs(d2); d2 *= 2; SetFlag(r, c, mp[{0, d2}]); continue; } SetFlag(r, c, mp[{d1, d2}]); } } }
#include "Bruno.h" #include <iostream> #include <vector> #include <algorithm> #include <map> #include <numeric> #include <set> #include <queue> using namespace std; std::vector<int> Bruno(int K, std::vector<int> value) { vector <pair <int, int>> vp; vp.push_back({ -1000 , -100 }); for (int i = -2; i <= 2; i++) { for (int j = -2; j <= 2; j++) { if (abs(i) + abs(j) > 2) continue; vp.push_back({ i , j }); } } vector <vector <int>> a(3); a[0] = { value[0] , value[1] , value[2] }; a[1] = { value[3] , value[4] , value[5] }; a[2] = { value[6] , value[7] , value[8] }; int I_ = -1; int J_ = -1; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { int j_ = (j + 1) % 3; if (a[i][j] == 4) { if (a[i][j_] == 3) { I_ = i; J_ = j; } } } } I_ += 3 - 2; J_ += 3 - 1; I_ %= 3; J_ %= 3; vector <int> ans(K); vector <vector <int>> u(3); u[0] = { 0 , 1 , 2 }; u[1] = { 3 , 4 , 5 }; u[2] = { 6 , -1 , -1 }; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (u[i][j] == -1) continue; int x = u[i][j]; int II = (I_ + i) % 3; int JJ = (J_ + j) % 3; int y = a[II][JJ]; int pr_x = vp[y].first; int pr_y = vp[y].second; if (pr_x == -2) { ans[x] = 3; continue; } if (pr_x == 2) { ans[x] = 2; continue; } if (pr_y == -2) { ans[x] = 1; continue; } if (pr_y == 2) { ans[x] = 0; continue; } II += pr_x; JJ += pr_y; if ((II - 1) >= 1) { ans[x] = 2; continue; } if ((II - 1) <= -1) { ans[x] = 3; continue; } if ((JJ - 1) >= 1) { ans[x] = 0; continue; } if ((JJ - 1) <= -1) { ans[x] = 1; continue; } ans[x] = 4; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...