Submission #8804831


Source Code Expand

#include <bits/stdc++.h>
#define BIT(n) (1LL << (n))
#define BITF(n, i) (((n) >> i) & 1)
#define REP(i, n) for (int i = 0; i < n; i++)
#define REPB(i, n) for (int i = 0; i < BIT(n); i++)
#define REPS(i, x) for (int i = 1; i <= x; i++)
#define REPR(i, n) for (int i = n; i >= 0; i--)
#define REPZ(i, x) for (int i = 0; i <= x; i++)
#define FOR(i, m, n) for (int i = m; i < n; i++)
#define FORA(i, n) for (auto &&i : n)
#define FORS(i, m, n) for (int i = m; i <= n; i++)
using namespace std;
#define PRINTARR(x, y)                                     \
  cerr << #x << "=\n";                                     \
  for (auto itr = x; itr != y; itr++) cerr << *itr << " "; \
  cerr << endl;
#define PRINTARR2(x, i0, i1)                                       \
  cerr << #x << "=\n";                                             \
  for (int ii0 = 0; ii0 < i0; ii0++) {                             \
    for (int ii1 = 0; ii1 < i1; ii1++) cerr << x[ii0][ii1] << " "; \
    cerr << endl;                                                  \
  }
#define DUMPOUT cerr
// vector
template <typename T> istream &operator>>(istream &is, vector<T> &vec) {
  for (T &x : vec) is >> x;
  return is;
}
// pair
template <typename T, typename U> ostream &operator<<(ostream &os, pair<T, U> &pair_var) {
  os << "(" << pair_var.first << ", " << pair_var.second << ")";
  return os;
}
// vector
template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec) {
  os << "{";
  REP(i, (int)vec.size())
  os << vec[i] << (i + 1 == (int)vec.size() ? "" : ", ");
  os << "}";
  return os;
}
// map
template <typename T, typename U> ostream &operator<<(ostream &os, map<T, U> &map_var) {
  os << "{";
  FORA(itr, map_var) {
    os << *itr;
    itr++;
    if (itr != map_var.end()) os << ", ";
    itr--;
  }
  os << "}";
  return os;
}
// set
template <typename T> ostream &operator<<(ostream &os, set<T> &set_var) {
  os << "{";
  FORA(itr, set_var) {
    os << *itr;
    itr++;
    if (itr != set_var.end()) os << ", ";
    itr--;
  }
  os << "}";
  return os;
}
void dump_func() { DUMPOUT << endl; }
template <class Head, class... Tail> void dump_func(Head &&head, Tail &&... tail) {
  DUMPOUT << head;
  if (sizeof...(Tail) > 0) DUMPOUT << ", ";
  dump_func(std::move(tail)...);
}
#ifdef DEBUG_
#define DEB
#define DUMP(...)                                                             \
  DUMPOUT << "  " << string(#__VA_ARGS__) << ": "                             \
          << "[" << to_string(__LINE__) << ":" << __FUNCTION__ << "]" << endl \
          << "    ",                                                          \
      dump_func(__VA_ARGS__)
#else
#define DEB if (false)
#define DUMP(...)
#endif
#define ALL(v) v.begin(), v.end()
#define fst first
#define snd second
#define mp make_pair
#define pb push_back
#define epb emplace_back
#define int long long
#define pint pair<int, int>
#define ld long double
using namespace std;
template <class T> bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> using vec = std::vector<T>;
template <class T> void print(const T &x) { cout << x << "\n"; }
const int MOD = 1000000007, INF0 = 1061109567, INF = INF0 * INF0;
const double EPS = 1e-10, PI = acos(-1.0);
const int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
#define MAXN 640000
//----//
struct edge {
  int from, to;
};
char A[800][800];
// edge G[(640000 * 4)];
int H, W, K, S;

int d[MAXN];
int d2[MAXN];
vector<int> G[MAXN];
bool visited[MAXN];
struct Idcost {
  int id, cost;
};
queue<Idcost> q;
void bfs() {
  fill(d, d + H * W, INF);
  Idcost start = {S, 0};
  q.push(start);
  while (!q.empty()) {
    Idcost now = q.front();
    d[now.id] = now.cost;
    visited[now.id] = true;
    q.pop();
    /*if (now.id == T) {
      return now.cost;
    }*/
    for (auto x : G[now.id]) {
      Idcost next = {x, now.cost + 1};
      if (!visited[x]) {
        //        DUMP(x, now.cost + 1);
        q.push(next);
      }
    }
  }
  return;
}

signed main() {
  cin.tie(0), ios::sync_with_stdio(false);
  cout << fixed << setprecision(10);
  cin >> H >> W >> K;
  REP(i, H) REP(j, W) {
    cin >> A[i][j];
    if (A[i][j] == 'S') S = i * W + j;
  }

  REP(i, H) {
    REP(j, W - 1) {
      if (A[i][j] != '#' && A[i][j + 1] != '#') {
        int addr = i * W + j;
        G[addr].pb(addr + 1);
        G[addr + 1].pb(addr);
      }
    }
  }
  REP(i, W) {
    REP(j, H - 1) {
      if (A[j][i] != '#' && A[j + 1][i] != '#') {
        int addr = j * W + i;
        G[addr].pb(addr + W);
        G[addr + W].pb(addr);
      }
    }
  }
  // DUMP(S);
  bfs();
  fill(d2, d2 + H * W, INF);
  REP(i, H) REP(j, W) {
    int val = min({i, H - 1 - i, j, W - 1 - j});
    d2[i * W + j] = (val + K - 1) / K;
  }
  int ans = INF;
  REP(i, H) REP(j, W) {
    if (d[i * W + j] <= K) chmin(ans, 1 + d2[i * W + j]);
  }
  print(ans);
  //  REP(i, H * W) DUMP(i, d[i]);
}

Submission Info

Submission Time
Task C - Closed Rooms
User cygnus
Language C++14 (GCC 5.4.1)
Score 0
Code Size 5214 Byte
Status TLE
Exec Time 2210 ms
Memory 1691428 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 700
Status
AC × 3
AC × 34
TLE × 12
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All sample1.txt, sample2.txt, sample3.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
in1.txt AC 77 ms 37760 KB
in10.txt AC 79 ms 38176 KB
in11.txt AC 78 ms 37632 KB
in12.txt AC 77 ms 37760 KB
in13.txt AC 80 ms 37760 KB
in14.txt AC 80 ms 37760 KB
in15.txt AC 78 ms 37632 KB
in16.txt AC 79 ms 37632 KB
in17.txt AC 80 ms 37760 KB
in18.txt AC 80 ms 37632 KB
in19.txt AC 79 ms 37760 KB
in2.txt AC 77 ms 37760 KB
in20.txt AC 7 ms 18688 KB
in21.txt AC 7 ms 18048 KB
in22.txt AC 6 ms 18048 KB
in23.txt AC 51 ms 31616 KB
in24.txt AC 49 ms 31616 KB
in25.txt AC 51 ms 31616 KB
in26.txt TLE 2168 ms 1036628 KB
in27.txt TLE 2150 ms 790104 KB
in28.txt TLE 2165 ms 1061328 KB
in29.txt TLE 2157 ms 902064 KB
in3.txt AC 81 ms 37632 KB
in30.txt TLE 2158 ms 930200 KB
in31.txt TLE 2189 ms 1416408 KB
in32.txt TLE 2158 ms 921032 KB
in33.txt TLE 2205 ms 1657832 KB
in34.txt TLE 2207 ms 1627628 KB
in35.txt TLE 2210 ms 1691428 KB
in36.txt AC 27 ms 26496 KB
in37.txt AC 28 ms 26496 KB
in38.txt AC 27 ms 26496 KB
in39.txt TLE 2201 ms 1498800 KB
in4.txt AC 80 ms 37632 KB
in40.txt TLE 2199 ms 1385116 KB
in5.txt AC 79 ms 37632 KB
in6.txt AC 81 ms 37632 KB
in7.txt AC 85 ms 37632 KB
in8.txt AC 80 ms 37760 KB
in9.txt AC 83 ms 37632 KB
sample1.txt AC 7 ms 18048 KB
sample2.txt AC 6 ms 18048 KB
sample3.txt AC 6 ms 18048 KB