# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
555311 | 2022-04-30T12:09:19 Z | 600Mihnea | Sightseeing in Kyoto (JOI22_kyoto) | C++17 | 3 ms | 3412 KB |
#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]; bool in_shib_a[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); } vector<int> shib_a; cin>>n>>m; for (int i=1;i<=n;i++) { cin>>a[i]; while (1) { if((int)shib_a.size()<2) break; int p1=shib_a[(int)shib_a.size()-2]; int p2=shib_a[(int)shib_a.size()-1]; if(a[i]-a[p2]<a[p2]-a[p1]) { shib_a.pop_back(); }else{ break; } } shib_a.push_back(i); } for (auto &i:shib_a) in_shib_a[i]=1; for (int i=1;i<=m;i++) cin>>b[i]; vector<vector<ll>> dp(n+1,vector<ll> (m+1, INF)); dp[1][1]=0; for (int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(i+1<=n) dp[i+1][j]=min(dp[i+1][j],dp[i][j]+b[j]); if(j+1<=m&&in_shib_a[i]) dp[i][j+1]=min(dp[i][j+1],dp[i][j]+a[i]); } } cout<<dp[n][m]<<"\n"; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Incorrect | 1 ms | 724 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Incorrect | 3 ms | 3412 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Incorrect | 1 ms | 724 KB | Output isn't correct |
5 | Halted | 0 ms | 0 KB | - |