Submission #129252

# Submission time Handle Problem Language Result Execution time Memory
129252 2019-07-11T22:20:06 Z shashwatchandra Tracks in the Snow (BOI13_tracks) C++17
100 / 100
1888 ms 258352 KB
/*input
5 8
FFR.....
.FRRR...
.FFFFF..
..RRRFFR
.....FFF
*/
#pragma comment(linker, "/stack:200000000")
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
 
#define ll int
#define double long double
#define f first
#define s second
#define mp make_pair
#define pb push_back
 
#define RE(i,n) for (int i = 1; i <= n; i++)
#define RED(i,n) for (int i = n; i > 0; i--)
#define REPS(i,n) for(int i = 1; (i*i) <= n; i++)
#define REP(i,n) for (int i = 0; i < (int)n; i++)
#define FOR(i,a,b) for (int i = a; i < b; i++)
#define REPD(i,n) for (int i = n-1; i >= 0; i--)
#define FORD(i,a,b) for (int i = a; i >= b; i--)
 
#define all(v) v.begin(),v.end()
#define pii pair<int,int>
#define vi vector<int>
#define vvi vector<vi>
#define print(arr) for (auto it = arr.begin(); it != arr.end(); ++it) cout << *it << " "; cout << endl;
#define debug(x) cout << x << endl;
#define debug2(x,y) cout << x << " " << y << endl;
#define debug3(x,y,z) cout << x << " " << y << " " << z << endl;
 
typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;
 

const double PI = 3.14159265358979323846264338;

int floor1(int n,int k){
    if(n%k == 0 || n >= 0)return n/k;
    return (n/k)-1;
}
 
int ceil1(int n,int k){
    return floor1(n+k-1,k);
}
 
const int N = 4001;
int a[N][N];
int lev[N][N];
int n,m;
 
pair<int,int> xd[] = {{-1,0},{0,-1},{1,0},{0,1}};
 
bool ok(int x,int y){
	return (x and y and (x <= n) and (y <= m));
}
 
queue<pair<pair<int,int>,ll > > q;
stack<pair<pair<int,int>,int> > st;
 

void dfs(){
	
	
}
 
 
void solve(){
  	cin >> n >> m;
  	RE(i,n){
  		RE(j,m){
  			char o;cin >> o;
  			//cout << o;
  			if(o == '.')continue;
  			if(o == 'F')a[i][j] = 1;
  			else a[i][j] = 2;
  		}
  	}
  	q.push({{1,1},1});
	ll ans = 1;
	while(!q.empty()){
		int i1 = q.front().f.f;
		int j1 = q.front().f.s;
		ll npara = q.front().s;
		q.pop();
		if(lev[i1][j1])continue;
		ans = max(ans,npara);
		st.push({{i1,j1},npara});
		while(!st.empty()){
			int i = st.top().f.f;
			int j = st.top().f.s;
			int para = st.top().s;
			lev[i][j] = para;
			st.pop();
			REP(k,4){
				int ni = i+xd[k].f;
				int nj = j+xd[k].s;
 
				if(!ok(ni,nj))continue;
				if(a[i][j] != a[ni][nj]){
					if(a[ni][nj] and !lev[ni][nj])q.push({{ni,nj},para+1});
					continue;
				}
		
				if(!lev[ni][nj])st.push({{ni,nj},para});
			}
		}
	}
	cout << ans;
}
 
signed main(){
  ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  //freopen(".in","r",stdin);freopen(".out","w",stdout);
  int t = 1;
  //cin >> t;
  while(t--){
    solve();
  }
  return 0;
}

Compilation message

tracks.cpp:9:0: warning: ignoring #pragma comment  [-Wunknown-pragmas]
 #pragma comment(linker, "/stack:200000000")
# Verdict Execution time Memory Grader output
1 Correct 34 ms 6336 KB Output is correct
2 Correct 2 ms 504 KB Output is correct
3 Correct 2 ms 760 KB Output is correct
4 Correct 22 ms 6264 KB Output is correct
5 Correct 8 ms 3192 KB Output is correct
6 Correct 2 ms 504 KB Output is correct
7 Correct 2 ms 760 KB Output is correct
8 Correct 3 ms 888 KB Output is correct
9 Correct 3 ms 1144 KB Output is correct
10 Correct 7 ms 2680 KB Output is correct
11 Correct 7 ms 2424 KB Output is correct
12 Correct 14 ms 3448 KB Output is correct
13 Correct 8 ms 3192 KB Output is correct
14 Correct 9 ms 3192 KB Output is correct
15 Correct 29 ms 6008 KB Output is correct
16 Correct 33 ms 6392 KB Output is correct
17 Correct 22 ms 6008 KB Output is correct
18 Correct 22 ms 6264 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 34 ms 31460 KB Output is correct
2 Correct 107 ms 17104 KB Output is correct
3 Correct 586 ms 83612 KB Output is correct
4 Correct 182 ms 43056 KB Output is correct
5 Correct 414 ms 65340 KB Output is correct
6 Correct 1847 ms 174356 KB Output is correct
7 Correct 35 ms 32760 KB Output is correct
8 Correct 34 ms 31352 KB Output is correct
9 Correct 5 ms 888 KB Output is correct
10 Correct 3 ms 508 KB Output is correct
11 Correct 34 ms 32248 KB Output is correct
12 Correct 4 ms 1784 KB Output is correct
13 Correct 104 ms 17144 KB Output is correct
14 Correct 62 ms 11640 KB Output is correct
15 Correct 65 ms 16248 KB Output is correct
16 Correct 50 ms 6904 KB Output is correct
17 Correct 258 ms 33752 KB Output is correct
18 Correct 231 ms 47608 KB Output is correct
19 Correct 181 ms 43004 KB Output is correct
20 Correct 141 ms 30496 KB Output is correct
21 Correct 342 ms 62616 KB Output is correct
22 Correct 406 ms 65236 KB Output is correct
23 Correct 491 ms 52344 KB Output is correct
24 Correct 323 ms 57196 KB Output is correct
25 Correct 944 ms 125816 KB Output is correct
26 Correct 1132 ms 258352 KB Output is correct
27 Correct 1797 ms 221728 KB Output is correct
28 Correct 1837 ms 174356 KB Output is correct
29 Correct 1888 ms 172844 KB Output is correct
30 Correct 1752 ms 183748 KB Output is correct
31 Correct 1317 ms 102156 KB Output is correct
32 Correct 1363 ms 193336 KB Output is correct