제출 #1198572

#제출 시각아이디문제언어결과실행 시간메모리
11985720xZeroNautilus (BOI19_nautilus)C++20
100 / 100
150 ms628 KiB
#include <bits/extc++.h> using namespace std; using namespace __gnu_pbds; template<typename T> using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define cut4(a,b,c,d,e,...) e #define rep1(n) for(int i=0;i<(n);++i) #define rep2(i,n) for(int i=0;i<(n);++i) #define rep3(i,a,b) for(int i=(a);i<(b);++i) #define rep4(i,a,b,c) for(int i=(a);i<(b);i+=(c)) #define rev1(n) for(int i=(n)-1;i>=0;--i) #define rev2(i,n) for(int i=(n)-1;i>=0;--i) #define rev3(i,a,b) for(int i=(a)-1;i>=(b);--i) #define rev4(i,a,b,c) for(int i=(a)-1;i>=(b);i-=(c)) #define rep(...) cut4(__VA_ARGS__,rep4,rep3,rep2,rep1)(__VA_ARGS__) #define rev(...) cut4(__VA_ARGS__,rev4,rev3,rev2,rev1)(__VA_ARGS__) #define each(a, x) for(auto& a:x) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() #define over(x) {cout<<(x)<<'\n';return;} #define chmin(a,b) a=min(a,b) #define chmax(a,b) a=max(a,b) #define pb push_back #define eb emplace_back #define mp make_pair #define f first #define s second typedef long long ll; typedef long double db; typedef pair<int, int> pi; typedef pair<ll, ll> pl; typedef array<int, 3> qi; typedef array<ll, 3> ql; typedef vector<bool> vb; typedef vector<char> vc; typedef vector<string> vs; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<vi> vvi; typedef vector<vl> vvl; typedef vector<pi> vpi; typedef vector<pl> vpl; typedef vector<qi> vqi; typedef vector<ql> vql; // const db PI = atan(1)*4; // const ll mod = 1e9+7; const ll mod = 998244353; const int mx=500*500; bitset<mx> msk; void solve(int){ int n, m, k; cin>>n>>m>>k; rep(n)rep(j,m){ char c; cin>>c; if(c=='.') msk[i*m+j]=1; } string s; cin>>s; bitset<mx> a; rep(mx)a[i]=1; a&=msk; rep(sz(s)){ bitset<mx> b(0); if(s[i]=='N'||s[i]=='?') b|=a>>m; if(s[i]=='S'||s[i]=='?') b|=a<<m; if(s[i]=='E'||s[i]=='?') { bitset<mx> c=a; rep(n)c[i*m+m-1]=0; b|=c<<1; } if(s[i]=='W'||s[i]=='?') { bitset<mx>c=a; rep(n)c[i*m]=0; b|=c>>1; } a=b&msk; } int ans=a.count(); cout<<ans; } int main(){ cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); int tc=1; // cin>>tc; rep(tc) solve(i); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...