#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
#include "ext/pb_ds/assoc_container.hpp"
#include "ext/pb_ds/tree_policy.hpp"
using namespace __gnu_pbds;
template<class T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update> ;
template<typename T>
using ordered_multiset = tree<T, null_type,less_equal<T>, rb_tree_tag,tree_order_statistics_node_update>;
// find_by_order(k) returns iterator to kth element starting from 0;
// order_of_key(k) returns count of elements strictly smaller than k;
// useful defs
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vii;
typedef pair<ll,ll> pi;
typedef vector<pi> vpi;
typedef unordered_map<ll,ll> mll;
#define pb push_back
#define mp make_pair
#define rep(i,a,b) for (int i = (a); i < (b); i++)
#define per(i,a,b) for (int i = (b)-1; i >= (a); i--)
#define trav(a,arr) for (auto& a: (arr))
#define sz(x) (int)(x).size()
#define mk_vec(name,sz,value) vi name(sz,value)
#define mk_mat(name,n,m,value) vii name(n, vi(m, value))
#define contains(x) find(x) != string::npos
#define tkv(vec,sz) rep(i,0,sz) cin>>vec[i]
#define srv(vec) sort(vec.begin(), vec.end())
#define all(x) x.begin(), x.end()
#define less(a,b) a<b
#define vsum(vec) accumulate(vec.begin(), vec.end(), 0L);
#define vmax(vec) *max_element(vec.begin(), vec.end());
#define vmin(vec) *min_element(vec.begin(), vec.end());
#define pvc(vec) trav(x,vec) cout<<x<<" "; cout<<endl;
#define put(x) cout<<(x)<<endl;
#define put2(x,y) cout<<(x)<<" "<<(y)<<endl;
#define put3(x,y,z) cout<<(x)<<" "<<(y)<<" "<<(z)<<endl;
#define mod(x) (x + MOD)%MOD
// debugging
#define timed(x) {auto start = chrono::steady_clock::now(); x; auto end = chrono::steady_clock::now(); auto diff = end - start; cout << chrono::duration <double, milli> (diff).count() << " ms" << endl;}
void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define debug(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
#define debug(x...)
#endif
const ll MOD = 1e9+7;
const ll INF = 1e10+5;
// driver code
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// freopen("input.in","r",stdin);
// freopen("output.out","w",stdout);
int T=1;
// cin>>T;
while(T--){
int h,w;
cin >> h >> w;
string mat[h];
rep(i,0,h){
cin >> mat[i];
}
deque<pair<int,int>> q;
q.push_back({0,0});
int depth[h][w];
memset(depth,0,sizeof depth);
depth[0][0] = 1;
int ans = 1;
int dx[4]{1, -1, 0, 0}, dy[4]{0, 0, 1, -1};
while (!q.empty())
{
auto p = q.front();
q.pop_front();
ans = max(ans,depth[p.first][p.second]);
rep(i,0,4){
int x=p.second+dx[i],y=p.first+dy[i];
if(x<w && y<h && x>=0 && y>=0 && depth[y][x]==0 && mat[y][x]!='.'){
depth[y][x] = depth[p.first][p.second] + (mat[y][x] != mat[p.first][p.second]);
if(mat[y][x] != mat[p.first][p.second]) q.push_back({y,x});
else q.push_front({y,x});
}
}
}
put(ans);
}
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
1740 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
320 KB |
Output is correct |
4 |
Correct |
5 ms |
1476 KB |
Output is correct |
5 |
Correct |
2 ms |
724 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
320 KB |
Output is correct |
8 |
Correct |
1 ms |
360 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
2 ms |
596 KB |
Output is correct |
11 |
Correct |
1 ms |
624 KB |
Output is correct |
12 |
Correct |
3 ms |
852 KB |
Output is correct |
13 |
Correct |
2 ms |
724 KB |
Output is correct |
14 |
Correct |
2 ms |
828 KB |
Output is correct |
15 |
Correct |
8 ms |
1740 KB |
Output is correct |
16 |
Correct |
7 ms |
1748 KB |
Output is correct |
17 |
Correct |
7 ms |
1748 KB |
Output is correct |
18 |
Correct |
4 ms |
1364 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
592 KB |
Output is correct |
2 |
Correct |
26 ms |
9600 KB |
Output is correct |
3 |
Correct |
156 ms |
96352 KB |
Output is correct |
4 |
Correct |
46 ms |
22564 KB |
Output is correct |
5 |
Correct |
111 ms |
54136 KB |
Output is correct |
6 |
Correct |
429 ms |
109624 KB |
Output is correct |
7 |
Correct |
1 ms |
596 KB |
Output is correct |
8 |
Correct |
1 ms |
596 KB |
Output is correct |
9 |
Correct |
2 ms |
596 KB |
Output is correct |
10 |
Correct |
1 ms |
468 KB |
Output is correct |
11 |
Correct |
1 ms |
596 KB |
Output is correct |
12 |
Correct |
1 ms |
352 KB |
Output is correct |
13 |
Correct |
26 ms |
9532 KB |
Output is correct |
14 |
Correct |
19 ms |
5688 KB |
Output is correct |
15 |
Correct |
10 ms |
6176 KB |
Output is correct |
16 |
Correct |
13 ms |
4164 KB |
Output is correct |
17 |
Correct |
70 ms |
24392 KB |
Output is correct |
18 |
Correct |
67 ms |
24156 KB |
Output is correct |
19 |
Correct |
55 ms |
22640 KB |
Output is correct |
20 |
Correct |
48 ms |
20820 KB |
Output is correct |
21 |
Correct |
88 ms |
55952 KB |
Output is correct |
22 |
Correct |
106 ms |
54100 KB |
Output is correct |
23 |
Correct |
157 ms |
46644 KB |
Output is correct |
24 |
Correct |
90 ms |
54632 KB |
Output is correct |
25 |
Correct |
279 ms |
96264 KB |
Output is correct |
26 |
Correct |
414 ms |
123868 KB |
Output is correct |
27 |
Correct |
351 ms |
114588 KB |
Output is correct |
28 |
Correct |
437 ms |
109736 KB |
Output is correct |
29 |
Correct |
413 ms |
107228 KB |
Output is correct |
30 |
Correct |
395 ms |
111640 KB |
Output is correct |
31 |
Correct |
312 ms |
62040 KB |
Output is correct |
32 |
Correct |
405 ms |
113204 KB |
Output is correct |