제출 #940315

#제출 시각아이디문제언어결과실행 시간메모리
940315andrei_boacaSightseeing in Kyoto (JOI22_kyoto)C++17
0 / 100
17 ms34140 KiB
#include <bits/stdc++.h> using namespace std; //ofstream fout("date.out"); mt19937 rng(chrono::steady_clock().now().time_since_epoch().count()); typedef long long ll; const ll INF=1e17; ll n,m; ll lin[100005],col[100005],dp[1005][1005]; ll from[1005][1005]; string dig(ll x) { string s; while(x!=0) { s.push_back(char('0'+x%10)); x/=10; } while(s.size()<4) s.push_back('0'); reverse(s.begin(),s.end()); return s; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>n>>m; for(int i=1;i<=n;i++) cin>>lin[i]; for(int i=1;i<=m;i++) cin>>col[i]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(i!=1||j!=1) { dp[i][j]=INF; if(i>1&&dp[i-1][j]+col[j]<dp[i][j]) { dp[i][j]=min(dp[i][j],dp[i-1][j]+col[j]); from[i][j]=1; } if(j>1&&dp[i][j-1]+lin[i]<dp[i][j]) { dp[i][j]=min(dp[i][j],dp[i][j-1]+lin[i]); from[i][j]=2; } } cout<<dp[n][m]; int i=n,j=m; int prv=0; int changes=0; while(i!=1||j!=1) { if(from[i][j]!=prv&&prv!=0) changes++; prv=from[i][j]; if(from[i][j]==1) i--; else j--; } assert(changes<=30); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...