Submission #131679

#TimeUsernameProblemLanguageResultExecution timeMemory
131679youssefbou62Nautilus (BOI19_nautilus)C++14
66 / 100
1073 ms2808 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize ("O3") #define mp make_pair #define fi first #define se second #define all(v) v.begin(),v.end() #define allarr(a) a , a + n #define ll long long #define ull unsigned long long #define pb push_back #define fastio ios_base::sync_with_stdio(false) ; cin.tie(NULL); cout.tie(NULL) typedef pair<int, int> pi; typedef pair<ll,ll> pll; typedef pair<int,pi> trp ; typedef vector<pi> vpi; typedef vector<pll> vpll ; // int ab (int x ) { return (x>0?x:-x); } const int N = 505 , M = 5005 ; int R , C , dp[2][N][N]; string seq ; char a[N][N] ; void direction(int& i, int& j , char c ){ if( c =='N'){ i-- ; }else if( c =='S'){ i++; }else if( c =='E'){ j++ ; }else if( c =='W'){ j--; } } bool valid (int i , int j ){ return ( i >= 0 && j >= 0 && i < R && j < C && a[i][j]!='#') ; } int main(){ int m ; scanf("%d%d%d\n",&R,&C,&m); for(int i = 0 ; i < R ; i++ ){ for(int j = 0 ; j < C ; j++ ){ scanf(" %c",a[i]+j) ; } } cin >> seq ; for(int i = 0 ; i < R ; i++ ){ for(int j = 0 ; j < C ;j++) dp[0][i][j] = 1 ; } // memset(dp[0],1,sizeof dp[0]); string dir = "NSWE"; for(int moves = 0 ; moves < m ; moves++ ){ for(int i = 0 ; i < R ; i++ ){ for(int j = 0 ; j < C ; j++ ){ int y= j , x = i ; if( a[i][j] == '#')continue ; for(char c : dir ){ if( seq[moves] == '?' || c==seq[moves] ){ direction(x,y,c); if( valid ( x , y ) ){ dp[1][x][y] |= dp[0][i][j]; } x = i ; y = j ; } } } } for(int i = 0 ; i < R ; i++ ){ for(int j = 0 ; j < C ; j++ ){ dp[0][i][j] =dp[1][i][j]; dp[1][i][j] =0 ; } } } // for(int mm =0 ; mm < m ; mm++ ){ // cout << mm << endl; // for(int i = 0 ; i < R ; i++ ){ // for(int j = 0 ; j < C ; j++ )cout << dp[m][i][j]<< " "; // cout << endl; // } // cout << endl; // } int ans = 0 ; for(int i = 0 ; i < R ; i++ )for(int j = 0 ; j < C ; j++ )ans += dp[0][i][j] ; cout << ans << endl; }

Compilation message (stderr)

nautilus.cpp: In function 'int main()':
nautilus.cpp:46:6: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
 scanf("%d%d%d\n",&R,&C,&m); 
 ~~~~~^~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:49:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %c",a[i]+j) ; 
   ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...