제출 #555312

#제출 시각아이디문제언어결과실행 시간메모리
555312600MihneaSightseeing in Kyoto (JOI22_kyoto)C++17
10 / 100
545 ms1048576 KiB
#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])*(p2-p1)<(a[p2]-a[p1])*(i-p2)) { 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"; }

컴파일 시 표준 에러 (stderr) 메시지

kyoto.cpp: In function 'int main()':
kyoto.cpp:23:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |     freopen("I_am_iron_man", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...