Submission #623443

#TimeUsernameProblemLanguageResultExecution timeMemory
623443inksamuraiJetpack (COCI16_jetpack)C++17
32 / 80
1098 ms14192 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define per(i,n) for(int i=n-1;i>=0;i--) #define rng(i,c,n) for(int i=c;i<n;i++) #define fi first #define se second #define pb push_back #define sz(a) (int)a.size() #define vec(...) vector<__VA_ARGS__> #define _3SgiE60 ios::sync_with_stdio(0),cin.tie(0) typedef long long ll; using pii=pair<int,int>; using vi=vector<int>; void print(){cout<<'\n';} template<class h,class...t> void print(const h&v,const t&...u){cout<<v<<' ',print(u...);} // e const int inf=1e9; signed main(){ _3SgiE60; const int h=10; int w; cin>>w; vec(vec(char)) a(h,vec(char)(w)); rep(i,h){ rep(j,w){ cin>>a[i][j]; } } auto ok=[&](int x,int y){ return min(x,y)>=0 and x<h and y<w; }; const int di[]={-1,1}; const int dj[]={1,1}; using T=pair<int,pii>; vec(vec(T)) dp(h,vec(T)(w)); rep(i,h){ rep(j,w){ dp[i][j]={inf,{-1,-1}}; } } auto affine=[&](int sx,int sy,int val,int x,int y,int ad)->void{ val+=ad; if(dp[sx][sy].fi>val){ dp[sx][sy].fi=val; dp[sx][sy].se={x,y}; } }; auto dfs=[&](auto self,int x,int y)->int{ assert(a[x][y]=='.'); if(dp[x][y].fi!=inf) return dp[x][y].fi; if(y==w-1) return 0; int sx=x,sy=y; rep(_,10){ x+=di[0],y+=dj[0]; if(ok(x,y) and a[x][y]=='.'){ int nval=self(self,x,y); // if(sx==h-1 and sy==0){ // print("ho",nval,x,y); // } affine(sx,sy,nval,x,y,1); }else{ break; } } x=sx,y=sy; x+=di[1],y+=dj[1]; x=min(x,h-1); if(ok(x,y) and a[x][y]=='.'){ int nval=self(self,x,y); affine(sx,sy,nval,x,y,0); } return dp[sx][sy].fi; }; dfs(dfs,h-1,0); int x=h-1,y=0; cout<<dp[x][y].fi<<"\n"; while(y<w-1 and x!=-1 and y!=-1){ // print(x,y); int nx,ny; nx=dp[x][y].se.fi,ny=dp[x][y].se.se; if(nx<x){ cout<<y<<" "<<ny-y<<"\n"; } x=nx,y=ny; } }
#Verdict Execution timeMemoryGrader output
Fetching results...