답안 #1109906

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1109906 2024-11-08T03:33:32 Z HNa_seawjing Nautilus (BOI19_nautilus) C++14
66 / 100
1000 ms 3408 KB
#include <bits/stdc++.h>
//code
#define fl(i,x,y,z) for(int i=x;i<=y;i=i+z)
#define fn(i,x,y,z) for(int i=x;i>=y;i=i-z)
#define rep(i,x,y) for(int i=x;i<y;i=i+1)
#define all(v) v.begin(),v.end()
#define pb emplace_back
#define tle cout<<"tle"<<endl
#define edl cout<<"\n"
#define el "\n"
#define getbit(x,i) ((x>>i)&1)
#define bitcnt __builtin_popcount
//ham
#define pii pair<int,int>
#define fi first
#define se second
#define ll long long
#define ld long double
#define inf 0x3f3f3f3f
//#define int long long
template <typename T1, typename T2>
bool minimize(T1 &a, T2 b)
{
    if (a > b)
    {
        a = b;
        return true;
    }
    return false;
}
template <typename T1, typename T2>
bool maximize(T1 &a, T2 b)
{
    if (a < b)
    {
        a = b;
        return true;
    }
    return false;
}
using namespace std;
const int maxn=5005;
int m,n,p;
string s;
bitset <maxn> dp[maxn],et[maxn],f[maxn],a[maxn];
void inp()
{
    cin>>m>>n>>p;
    fl(i,1,m,1)
        fl(j,1,n,1)
        {
            char x; cin>>x;
            if (x=='.') a[i][j]=1;
            else a[i][j]=0;
            dp[i][j]=a[i][j];
        }
    cin>>s;
}
void change(char t,int x)
{
    if (t=='?') f[x]=(dp[x-1]|dp[x+1]|(dp[x]>>1)|(dp[x]<<1))&a[x];
    else if (t=='N') f[x]=dp[x+1]&a[x];
    else if (t=='E') f[x]=(dp[x]<<1)&a[x];
    else if (t=='S') f[x]=dp[x-1]&a[x];
    else if (t=='W') f[x]=(dp[x]>>1)&a[x];
}
void sol()
{
    rep(x,0,s.length())
    {
        fl(i,1,m,1) change(s[x],i);
        fl(i,1,m,1)
        {
            dp[i]=f[i];
            f[i]^=et[i];
        }
//        fl(i,1,m,1)
//        {
//            fl(j,1,n,1)
//                cout<< dp[i][j]<< " ";
//            edl;
//        }
//        edl;
    }
    int cnt=0;
    fl(i,1,m,1)
        cnt+= dp[i].count();
    cout<<cnt;
}
signed main()
{
    #define name "seaw"
    if (fopen(name".inp", "r"))
    {
        freopen(name".inp", "r", stdin);
        freopen(name".out", "w", stdout);
    }
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    inp();
    sol();
    return 0;
}
/*   /\_/\
    ( ._. )
    / >V< \
*/

Compilation message

nautilus.cpp: In function 'void sol()':
nautilus.cpp:5:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    5 | #define rep(i,x,y) for(int i=x;i<y;i=i+1)
......
   69 |     rep(x,0,s.length())
      |         ~~~~~~~~~~~~~~           
nautilus.cpp:69:5: note: in expansion of macro 'rep'
   69 |     rep(x,0,s.length())
      |     ^~~
nautilus.cpp: In function 'int main()':
nautilus.cpp:95:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   95 |         freopen(name".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:96:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   96 |         freopen(name".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 2640 KB Output is correct
2 Correct 3 ms 2640 KB Output is correct
3 Correct 3 ms 2524 KB Output is correct
4 Correct 3 ms 2640 KB Output is correct
5 Correct 3 ms 2640 KB Output is correct
6 Correct 3 ms 2640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 2640 KB Output is correct
2 Correct 3 ms 2640 KB Output is correct
3 Correct 3 ms 2524 KB Output is correct
4 Correct 3 ms 2640 KB Output is correct
5 Correct 3 ms 2640 KB Output is correct
6 Correct 3 ms 2640 KB Output is correct
7 Correct 4 ms 2640 KB Output is correct
8 Correct 4 ms 2640 KB Output is correct
9 Correct 5 ms 2640 KB Output is correct
10 Correct 5 ms 2660 KB Output is correct
11 Correct 4 ms 2640 KB Output is correct
12 Correct 5 ms 2660 KB Output is correct
13 Correct 5 ms 2640 KB Output is correct
14 Correct 5 ms 2808 KB Output is correct
15 Correct 6 ms 2640 KB Output is correct
16 Correct 5 ms 2640 KB Output is correct
17 Correct 6 ms 2896 KB Output is correct
18 Correct 6 ms 2664 KB Output is correct
19 Correct 6 ms 2640 KB Output is correct
20 Correct 6 ms 2668 KB Output is correct
21 Correct 6 ms 2640 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 2640 KB Output is correct
2 Correct 3 ms 2640 KB Output is correct
3 Correct 3 ms 2524 KB Output is correct
4 Correct 3 ms 2640 KB Output is correct
5 Correct 3 ms 2640 KB Output is correct
6 Correct 3 ms 2640 KB Output is correct
7 Correct 4 ms 2640 KB Output is correct
8 Correct 4 ms 2640 KB Output is correct
9 Correct 5 ms 2640 KB Output is correct
10 Correct 5 ms 2660 KB Output is correct
11 Correct 4 ms 2640 KB Output is correct
12 Correct 5 ms 2660 KB Output is correct
13 Correct 5 ms 2640 KB Output is correct
14 Correct 5 ms 2808 KB Output is correct
15 Correct 6 ms 2640 KB Output is correct
16 Correct 5 ms 2640 KB Output is correct
17 Correct 6 ms 2896 KB Output is correct
18 Correct 6 ms 2664 KB Output is correct
19 Correct 6 ms 2640 KB Output is correct
20 Correct 6 ms 2668 KB Output is correct
21 Correct 6 ms 2640 KB Output is correct
22 Correct 731 ms 3408 KB Output is correct
23 Correct 727 ms 3408 KB Output is correct
24 Correct 743 ms 3408 KB Output is correct
25 Correct 758 ms 3408 KB Output is correct
26 Correct 783 ms 3408 KB Output is correct
27 Execution timed out 1036 ms 3408 KB Time limit exceeded
28 Halted 0 ms 0 KB -