이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std ;
const int MAX = 510 ;
char arr[MAX][MAX] ;
int n , m , k ;
bitset<MAX>prv[MAX] , now[MAX] , mask[MAX] ;
string s ;
int main()
{
ios_base::sync_with_stdio(0) ;
cin.tie(0) ;
cin>>n>>m>>k ;
for(int i = 0 ; i < n ; ++i)
{
for(int j = 0 ; j < m ; ++j)
{
cin>>arr[i][j] ;
if(arr[i][j] == '.')
now[i][j] = 1 ;
else
mask[i][j] = 1 ;
}
mask[i][m] = 1 ;
}
cin>>s ;
for(int j = 0 ; j < k ; ++j)
{
for(int i = 0 ; i < n ; ++i)
prv[i] = now[i] , now[i].reset() ;
if(s[j] == 'N' || s[j] == '?')
{
for(int i = 0 ; i < n-1 ; ++i)
now[i] |= prv[i+1] ;
}
if(s[j] == 'S' || s[j] == '?')
{
for(int i = 1 ; i < n ; ++i)
now[i] |= prv[i-1] ;
}
if(s[j] == 'W' || s[j] == '?')
{
for(int i = 0 ; i < n ; ++i)
now[i] |= (prv[i] >> 1) ;
}
if(s[j] == 'E' || s[j] == '?')
{
for(int i = 0 ; i < n ; ++i)
now[i] |= (prv[i] << 1) ;
}
for(int i = 0 ; i < n ; ++i)
{
now[i] |= mask[i] ;
now[i] ^= mask[i] ;
}
}
int ans = 0 ;
for(int i = 0 ; i < n ; ++i)
ans += now[i].count() ;
return cout<<ans<<"\n" , 0 ;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |