# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
555205 | 600Mihnea | Sightseeing in Kyoto (JOI22_kyoto) | C++17 | 2078 ms | 4052 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>
bool home = 1;
using namespace std;
typedef long long ll;
const int N=(int)1e5+7;
const ll INF=(ll)1e18+7;
int n;
int m;
ll a[N];
ll b[N];
signed main() {
#ifdef ONLINE_JUDGE
home = 0;
#endif
home = 0;
if (home) {
freopen("I_am_iron_man", "r", stdin);
}
else {
ios::sync_with_stdio(0); cin.tie(0);
}
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=m;i++) cin>>b[i];
vector<ll> dp(m+1,INF);
vector<ll> difs(m);
for (int j=1;j<=m;j++){
dp[j]=a[1]*(j-1);
}
difs[0]=-INF;
for (int j=1;j<m;j++){
difs[j]=a[1];
}
for (int i=2;i<=n;i++){
for(int j=0;j<m;j++){
assert(dp[j+1]-dp[j]==difs[j]);
}
ll s=0,s2=0;
for(int j=1;j<=m;j++){
s+=difs[j-1];
dp[j]=min(s+INF+b[j],s2+INF+a[i]);
difs[j-1]=dp[j]-dp[j-1];
s2+=difs[j-1];
}
}
cout<<dp[m]<<"\n";
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |