Submission #1103909

#TimeUsernameProblemLanguageResultExecution timeMemory
1103909Dreamy_lovesperPatkice (COCI20_patkice)C++17
0 / 50
5 ms25168 KiB
#include<bits/stdc++.h> using namespace std; namespace std { // #include<Love> using ll=long long; using str=string; using int128=__int128_t; using ld=long double; typedef unsigned int ui; typedef unsigned long long ull; #define Love<3 HerLoveForMeJustaDream } #define Lovesper_ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define pll pair<ll,ll> #define mll map<ll,ll> #define vll vector<ll> #define pb push_back #define all(c) c.begin(),c.end() #define fi first #define se second #define debug cout<<"I Love You\n"; #define fu(i,a,b) for(ll i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) #define fa(i,s) for(auto&i:s) #define Bitc(x,i) (((x)>>(i))&1) #define _log(_x) 63-__builtin_clzll(_x) #define LoveTime chrono::steady_clock::now().time_since_epoch().count() const pll dxy4[]={{-1,0},{0,-1},{0,1},{1,0}}; const pll dxy8[]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; constexpr ll Mod=1e9+7; constexpr ll mxn=1e6+7,mxm=3e3+7; constexpr long long inf=(1ll<<31); constexpr ll lnf=(1ll<<60); struct __TS { ~__TS() { // cerr<<"Time elapsed: "<<clock()*1.0/CLOCKS_PER_SEC<<'\n'; } }__ts; mt19937 rng(LoveTime); #define setup ((1<<3)-1>>1) void OpenLove(const str&name){ // I'm So Lonely. I am Trying To Get Out This Lonely With Her Love Lovesper_ if(fopen((name+".inp").c_str(),"r")){ // freopen((name+".test").c_str(),"r",stdin); freopen((name+".inp").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout); } } template<class X,class Y>bool maximize(X&x,const Y&y){X eps=1e-18;if(x+eps<y){x=y;return 1;}return 0;} template<class X,class Y>bool minimize(X&x,const Y&y){X eps=1e-18;if(x>y+eps){x=y;return 1;}return 0;} template <class Fun>class y_combinator_result { Fun fun_; public: template<class T>explicit y_combinator_result(T &&fun): fun_(std::forward<T>(fun)) {} template<class ...Args>decltype(auto) operator()(Args &&...args) {return fun_(std::ref(*this), std::forward<Args>(args)...);} }; template<class Fun>decltype(auto) y_combinator(Fun &&fun) {return y_combinator_result<std::decay_t<Fun>>(std::forward<Fun>(fun));} ostream&operator<<( std::ostream& dest, __int128_t value){ ostream::sentry s(dest);__uint128_t tmp=value<0?-value:value; char buffer[128];char*d=end(buffer); do{d--;*d="0123456789"[tmp%10];tmp/=10;}while(tmp); if(value<0)d--,*d='-';ll len=end(buffer)-d; if(dest.rdbuf()->sputn(d,len)!=len)dest.setstate(ios_base::badbit); return dest; } struct custom_hash{ size_t operator()(uint64_t x)const{ static const uint64_t HashRand=LoveTime; x^=HashRand;return x^(x>>16); }}; int64_t add(ll&a,ll b){a+=b;if(a>=Mod)a%=Mod;while(a<0)a+=Mod;return a;} int64_t mul(ll&a,ll b,ll mod){a=1ll*a*b%mod;return a;} int64_t mpow(ll a,ll b,ll mod){ll ans=1;for(;b;b>>=1,a=mul(a,a,mod))if(b&1)ans=mul(ans,a,mod);return ans;} ll n,m,g[mxn]; vector<pll>graph[mxn]; void Lovesper(const ll&TestCase){ cin>>n>>m; vector<vector<char>>f(n+7,vector<char>(m+7)); vector<vll>d(n+7,vll(m+7)); vector<vll>vis(n+7,vll(m+7)); pll start,end; fu(i,1,n)fu(j,1,m){ char x;cin>>x;f[i][j]=x; if(x=='o')start={i,j}; if(x=='x')end={i,j}; d[i][j]=lnf; } deque<pll>Q; str direction="^<>v"; str oppsite="v><^"; d[start.fi][start.se]=0; Q.push_front({start.fi,start.se}); while(!Q.empty()){ auto[i,j]=Q.front();Q.pop_front(); if(f[i][j]=='x')continue; fu(t,0,3){ auto[_i,_j]=dxy4[t]; ll x=i+_i,y=j+_j; if(x<0||x>n||y<0||y>m)continue; ll w=1; if(f[x][y]=='o')w=0; if(direction[t]==f[i][j])w=0; if(d[x][y]<=d[i][j]+w)continue; d[x][y]=d[i][j]+w; if(!w)Q.push_front({x,y}); else Q.push_back({x,y}); } } cout<<d[end.fi][end.se]-1<<'\n'; auto dfs=y_combinator([&](auto&&dfs,ll i,ll j)->bool { vis[i][j]=1; fu(t,0,3){ auto[_i,_j]=dxy4[t]; ll x=i+_i,y=j+_j; if(x<0||x>n||y<0||y>m||vis[x][y])continue; if(f[x][y]=='o')return true; ll w=1; if(f[x][y]==oppsite[t])w=0; if(d[i][j]!=d[x][y]+w)continue; if(dfs(x,y)){f[x][y]=oppsite[t];return true;} } return false; }); dfs(end.fi,end.se); fu(i,1,n){ fu(j,1,m)cout<<f[i][j]; cout<<'\n'; } } signed main(int argc, char const *argv[]){ OpenLove("lovesper"); int tt=1; // cin>>tt; for(ll i=1;i<=tt;i++){ Lovesper(i); if(i<tt)cout<<'\n'; } return false; }

Compilation message (stderr)

patkice.cpp:14:13: warning: ISO C++11 requires whitespace after the macro name
   14 |     #define Love<3 HerLoveForMeJustaDream
      |             ^~~~
patkice.cpp: In function 'std::ostream& operator<<(std::ostream&, __int128)':
patkice.cpp:75:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   75 |     if(value<0)d--,*d='-';ll len=end(buffer)-d;
      |     ^~
patkice.cpp:75:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   75 |     if(value<0)d--,*d='-';ll len=end(buffer)-d;
      |                           ^~
patkice.cpp: In function 'void OpenLove(const str&)':
patkice.cpp:56:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |         freopen((name+".inp").c_str(),"r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
patkice.cpp:57:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |         freopen((name+".out").c_str(),"w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...