# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
623443 | inksamurai | Jetpack (COCI16_jetpack) | C++17 | 1098 ms | 14192 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |