제출 #496566

#제출 시각아이디문제언어결과실행 시간메모리
496566vinnipuh01Nautilus (BOI19_nautilus)C++17
100 / 100
280 ms808 KiB
#include <iostream> #include <bits/stdc++.h> #include <cmath> #include <algorithm> #include <vector> #include <deque> #include <set> #include <stack> #include <string> #include <map> #include <queue> #include <bitset> #define int long long using namespace std; const long long oo = 1000000000000000000; long long sum, ans = 0, mx = 0, mn = 1000000000, num, pos; /* ViHHiPuh (( `'-""``""-'` )) )-__-_.._-__-( / --- (o _ o) --- \ \ .-* ( .0. ) *-. / _'-. ,_ '=' _, .-'_ / `;#'#'# - #'#'#;` \ \_)) -----'#'----- ((_/ # --------- # '# ------- ------ #' /..-'# ------- #'-.\ _\...-\'# -- #'/-.../_ ((____)- '#' -(____)) cout << fixed << setprecision(6) << x; ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); freopen ( "sum.in", "r", stdin ) */ int n, m, k; char c[ 501 ][ 501 ]; bitset <500> st[ 500 ], mp[ 500 ], stt[ 500 ], st1[ 500 ], ss[ 500 ]; main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> k; string s; for ( int i = 0; i < n; i ++ ) { for ( int j = 0; j < m; j ++ ) { cin >> c[ i ][ j ]; if ( c[ i ][ j ] == '.' ) { st[ i ][ j ] = 1; mp[ i ][ j ] = 1; } } } cin >> s; for ( auto k : s ) { if ( k == 'W' ) { for ( int i = 0; i < n; i ++ ) { st[ i ] = st[ i ] >> 1; } } else if ( k == 'E' ) { for ( int i = 0; i < n; i ++ ) { st[ i ] = st[ i ] << 1; } } else if ( k == 'N' ) { for ( int i = 0; i < n - 1; i ++ ) { st[ i ] = st[ i + 1 ]; } for ( int i = 0; i < m; i ++ ) st[ n - 1 ][ i ] = 0; } else if ( k == 'S' ) { for ( int i = n - 1; i >= 1; i -- ) { st[ i ] = st[ i - 1 ]; } for ( int i = 0; i < m; i ++ ) st[ 0 ][ i ] = 0; } else { for ( int i = 0; i < n; i ++ ) { ss[ i ] = st[ i ]; stt[ i ] = st[ i ]; st[ i ] = st1[ i ]; } for ( int i = 0; i < n; i ++ ) stt[ i ] = stt[ i ] >> 1; for ( int i = 0; i < n; i ++ ) st[ i ] = st[ i ] | stt[ i ]; for ( int i = 0; i < n; i ++ ) stt[ i ] = ss[ i ]; for ( int i = 0; i < n; i ++ ) stt[ i ] = stt[ i ] << 1; for ( int i = 0; i < n; i ++ ) st[ i ] = st[ i ] | stt[ i ]; for ( int i = 0; i < n; i ++ ) stt[ i ] = ss[ i ]; for ( int i = 0; i < n - 1; i ++ ) { stt[ i ] = stt[ i + 1 ]; } for ( int i = 0; i < m; i ++ ) stt[ n - 1 ][ i ] = 0; for ( int i = 0; i < n; i ++ ) st[ i ] = st[ i ] | stt[ i ]; for ( int i = 0; i < n; i ++ ) stt[ i ] = ss[ i ]; for ( int i = n - 1; i >= 1; i -- ) { stt[ i ] = stt[ i - 1 ]; } for ( int i = 0; i < m; i ++ ) stt[ 0 ][ i ] = 0; for ( int i = 0; i < n; i ++ ) st[ i ] = st[ i ] | stt[ i ]; } for ( int i = 0; i < n; i ++ ) st[ i ] = st[ i ] & mp[ i ]; } for ( int i = 0; i < n; i ++ ) { ans += st[ i ].count(); } cout << ans; }

컴파일 시 표준 에러 (stderr) 메시지

nautilus.cpp:51:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   51 | main () {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...