提出 #74068201


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main(){
  ll N,x = 0,y = 0,score = 0,score2 = 0,score3 = 0,score4 = 0,score5 = 0,M;
  cin >> N;
  vector<vector<ll>> A(N,vector<ll>(N));
  for(ll i = 0;i < N;i++){
    for(ll j = 0;j < N;j++){
      cin >> A[i][j];
    }
  }
  queue<pair<ll,ll>> B;
  B.push({0,0});
  function<void(char)> move = [&](char c){
    if(c == 'U'){
      x--;
    }
    if(c == 'D'){
      x++;
    }
    if(c == 'L'){
      y--;
    }
    if(c == 'R'){
      y++;
    }
    B.push({x,y});
  };
  for(ll i = 0;i < N / 2 - 1;i++){
    move('D');
    move('R');
    move('D');
    move('L');
  }
  move('D');
  move('R');
  move('R');
  for(ll i = 0;i < N / 4 - 1;i++){
    for(ll j = 0;j < N / 2 - 1;j++){
      move('R');
      move('U');
      move('L');
      move('U');
    }
    move('R');
    move('R');
    for(ll j = 0;j < N / 2 - 1;j++){
      move('R');
      move('D');
      move('L');
      move('D');
    }
    move('R');
    move('R');
  }
  for(ll i = 0;i < N / 2 - 1;i++){
    move('R');
    move('U');
    move('L');
    move('U');
  }
  move('R');
  move('U');
  for(ll i = 0;i < N - 2;i++){
    move('L');
  }
  while(1){
    if(A[B.front().first][B.front().second] == N * N){
      B.push(B.front());
      B.pop();
      break;
    }
    B.push(B.front());
    B.pop();
  }
  vector<pair<ll,ll>> ans(N * N);
  for(ll i = 0;i < N * N;i++){
    ans[i] = B.front();
    B.pop();
  }
  set<pair<ll,ll>> C;
  for(ll i = 0;i < N;i+=2){
    C.insert({i,0});
    C.insert({N - 1 - i,N - 1});
  }
  for(ll j = 3;j < N - 1;j+=4){
    for(ll i = N - 1;i >= 3;i-=2){
      C.insert({i,j});
      C.insert({i - 1,j + 1});
    }
  }
  for(ll i = 1;i < N * N - 1;i++){
    if(C.count(ans[i])){
      if(A[ans[i].first][ans[i].second] > A[ans[i + 1].first][ans[i + 1].second]){
        swap(ans[i],ans[i + 1]);
        i++;
      }
    }
  }
  for(ll i = 0;i < N * N;i++){
    score+=(i + 1) * A[ans[i].first][ans[i].second];
  }
  for(ll t = 0;t < N / 2;t++){
    for(ll j = 0;j < N;j++){
      score2+=(t * N * 2 + j + 1) * A[t * 2][j];
      score3+=(t * N * 2 + j + 1) * A[N - 1 - t * 2][N - 1 - j];
      score4+=(t * N * 2 + j + 1) * A[j][t * 2];
      score5+=(t * N * 2 + j + 1) * A[N - 1 - j][N - 1 - t * 2];
    }
    for(ll j = N - 1;j >= 0;j--){
      score2+=(t * N * 2 + N + N - j) * A[t * 2 + 1][j];
      score3+=(t * N * 2 + N + N - j) * A[N - 1 - (t * 2 + 1)][N - 1 - j];
      score4+=(t * N * 2 + N + N - j) * A[j][t * 2 + 1];
      score5+=(t * N * 2 + N + N - j) * A[N - 1 - j][N - 1 - (t * 2 + 1)];
    }
  }
  M = max({score,score2,score3,score4,score5});
  if(M == score){
    for(ll i = 0;i < N * N;i++){
      cout << ans[i].first << " " << ans[i].second << endl;
    }
    return 0;
  }
  if(M == score2){
    for(ll t = 0;t < N / 2;t++){
      for(ll j = 0;j < N;j++){
        cout << t * 2 << " " << j << endl;
      }
      for(ll j = N - 1;j >= 0;j--){
        cout << t * 2 + 1 << " " << j << endl;
      }
    }
    return 0;
  }
  if(M == score3){
    for(ll t = 0;t < N / 2;t++){
      for(ll j = 0;j < N;j++){
        cout << N - 1 - t * 2 << " " << N - 1 - j << endl;
      }
      for(ll j = N - 1;j >= 0;j--){
        cout << N - 1 - (t * 2 + 1) << " " << N - 1 - j << endl;
      }
    }
    return 0;
  }
  if(M == score4){
    for(ll t = 0;t < N / 2;t++){
      for(ll j = 0;j < N;j++){
        cout << j << " " << t * 2 << endl;
      }
      for(ll j = N - 1;j >= 0;j--){
        cout << j << " " << t * 2 + 1 << endl;
      }
    }
    return 0;
  }
  if(M == score5){
    for(ll t = 0;t < N / 2;t++){
      for(ll j = 0;j < N;j++){
        cout << N - 1 - j << " " << N - 1 - t * 2 << endl;
      }
      for(ll j = N - 1;j >= 0;j--){
        cout << N - 1 - j << " " << N - 1 - (t * 2 + 1) << endl;
      }
    }
    return 0;
  }
}

提出情報

提出日時
問題 A - King's Tour
ユーザ MI6174
言語 C++23 (GCC 15.2.0)
得点 40080838977
コード長 4005 Byte
結果 AC
実行時間 28 ms
メモリ 5076 KiB

ジャッジ結果

セット名 test_ALL
得点 / 配点 40080838977 / 100000000000
結果
AC × 100
セット名 テストケース
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_0000.txt AC 27 ms 4960 KiB
test_0001.txt AC 27 ms 4952 KiB
test_0002.txt AC 27 ms 5012 KiB
test_0003.txt AC 27 ms 5060 KiB
test_0004.txt AC 27 ms 4952 KiB
test_0005.txt AC 26 ms 4956 KiB
test_0006.txt AC 27 ms 5076 KiB
test_0007.txt AC 27 ms 4956 KiB
test_0008.txt AC 27 ms 4940 KiB
test_0009.txt AC 27 ms 4956 KiB
test_0010.txt AC 28 ms 4956 KiB
test_0011.txt AC 27 ms 4860 KiB
test_0012.txt AC 27 ms 4932 KiB
test_0013.txt AC 27 ms 4932 KiB
test_0014.txt AC 27 ms 5048 KiB
test_0015.txt AC 27 ms 4968 KiB
test_0016.txt AC 27 ms 4828 KiB
test_0017.txt AC 27 ms 5008 KiB
test_0018.txt AC 27 ms 5064 KiB
test_0019.txt AC 27 ms 5012 KiB
test_0020.txt AC 26 ms 4936 KiB
test_0021.txt AC 27 ms 5064 KiB
test_0022.txt AC 27 ms 4960 KiB
test_0023.txt AC 27 ms 4932 KiB
test_0024.txt AC 27 ms 4860 KiB
test_0025.txt AC 27 ms 4936 KiB
test_0026.txt AC 27 ms 4952 KiB
test_0027.txt AC 27 ms 4960 KiB
test_0028.txt AC 27 ms 5064 KiB
test_0029.txt AC 27 ms 4888 KiB
test_0030.txt AC 27 ms 4956 KiB
test_0031.txt AC 26 ms 5008 KiB
test_0032.txt AC 27 ms 4860 KiB
test_0033.txt AC 27 ms 5060 KiB
test_0034.txt AC 27 ms 4960 KiB
test_0035.txt AC 27 ms 4952 KiB
test_0036.txt AC 27 ms 4940 KiB
test_0037.txt AC 27 ms 4956 KiB
test_0038.txt AC 27 ms 5064 KiB
test_0039.txt AC 27 ms 5012 KiB
test_0040.txt AC 27 ms 5008 KiB
test_0041.txt AC 27 ms 4956 KiB
test_0042.txt AC 27 ms 4932 KiB
test_0043.txt AC 27 ms 4956 KiB
test_0044.txt AC 27 ms 4952 KiB
test_0045.txt AC 27 ms 5060 KiB
test_0046.txt AC 27 ms 4968 KiB
test_0047.txt AC 27 ms 4952 KiB
test_0048.txt AC 27 ms 5076 KiB
test_0049.txt AC 27 ms 5012 KiB
test_0050.txt AC 27 ms 5008 KiB
test_0051.txt AC 27 ms 5012 KiB
test_0052.txt AC 27 ms 4960 KiB
test_0053.txt AC 27 ms 5076 KiB
test_0054.txt AC 27 ms 4916 KiB
test_0055.txt AC 27 ms 4952 KiB
test_0056.txt AC 27 ms 4952 KiB
test_0057.txt AC 27 ms 4960 KiB
test_0058.txt AC 27 ms 4960 KiB
test_0059.txt AC 27 ms 5060 KiB
test_0060.txt AC 27 ms 5008 KiB
test_0061.txt AC 27 ms 4960 KiB
test_0062.txt AC 27 ms 5076 KiB
test_0063.txt AC 27 ms 4940 KiB
test_0064.txt AC 27 ms 4860 KiB
test_0065.txt AC 27 ms 5012 KiB
test_0066.txt AC 27 ms 4956 KiB
test_0067.txt AC 27 ms 5012 KiB
test_0068.txt AC 27 ms 4952 KiB
test_0069.txt AC 27 ms 5012 KiB
test_0070.txt AC 26 ms 5064 KiB
test_0071.txt AC 27 ms 4936 KiB
test_0072.txt AC 27 ms 4968 KiB
test_0073.txt AC 27 ms 4956 KiB
test_0074.txt AC 27 ms 4968 KiB
test_0075.txt AC 27 ms 4952 KiB
test_0076.txt AC 27 ms 4940 KiB
test_0077.txt AC 27 ms 5056 KiB
test_0078.txt AC 27 ms 4968 KiB
test_0079.txt AC 27 ms 5048 KiB
test_0080.txt AC 27 ms 4932 KiB
test_0081.txt AC 27 ms 5008 KiB
test_0082.txt AC 27 ms 4956 KiB
test_0083.txt AC 26 ms 4940 KiB
test_0084.txt AC 27 ms 4956 KiB
test_0085.txt AC 27 ms 4952 KiB
test_0086.txt AC 27 ms 4940 KiB
test_0087.txt AC 27 ms 4952 KiB
test_0088.txt AC 27 ms 4940 KiB
test_0089.txt AC 27 ms 5064 KiB
test_0090.txt AC 27 ms 4948 KiB
test_0091.txt AC 27 ms 4956 KiB
test_0092.txt AC 27 ms 4960 KiB
test_0093.txt AC 26 ms 4944 KiB
test_0094.txt AC 27 ms 5064 KiB
test_0095.txt AC 27 ms 4960 KiB
test_0096.txt AC 27 ms 4940 KiB
test_0097.txt AC 27 ms 4956 KiB
test_0098.txt AC 27 ms 4952 KiB
test_0099.txt AC 27 ms 4956 KiB