제출 #554060

#제출 시각아이디문제언어결과실행 시간메모리
554060tht2005Sightseeing in Kyoto (JOI22_kyoto)C++17
0 / 100
1 ms212 KiB
#include <bits/stdc++.h> using namespace std; typedef long long LL; const LL INF = numeric_limits<LL>::max(); const int N = 100005; const int W = 2003; int w, h, a[N], b[N], n, m, c[W], d[W]; LL f[W][W]; int main() { freopen("kyoto.inp", "r", stdin); scanf("%d %d", &w, &h); for(int i = 1; i <= w; ++i) { scanf("%d", a + i); } n = 0; for(int i = 1; i <= w; ++i) { c[++n] = i; if(i != 1 && i != w) { while(n > 1) { if(a[c[n]] < a[c[n - 1]] || a[c[n]] < a[i + 1]) break; --n; } } } for(int i = 1; i <= h; ++i) { scanf("%d", b + i); } m = 0; for(int i = 1; i <= h; ++i) { d[++m] = i; if(i != 1 && i != h) { while(m > 1) { if(b[d[m]] < b[d[m - 1]] || b[d[m]] < b[i + 1]) break; --m; } } } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= m; ++j) { f[i][j] = INF; } } f[1][1] = 0; for(int i = 1; i <= n; ++i) { for(int j = 1; j <= m; ++j) { if(i != 1) f[i][j] = min(f[i][j], f[i - 1][j] + (LL)b[d[j]] * (c[i] - c[i - 1])); if(j != 1) f[i][j] = min(f[i][j], f[i][j - 1] + (LL)a[c[i]] * (d[j] - d[j - 1])); } } printf("%lld", f[n][m]); return 0; }

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

kyoto.cpp: In function 'int main()':
kyoto.cpp:15:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |     freopen("kyoto.inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
kyoto.cpp:16:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |     scanf("%d %d", &w, &h);
      |     ~~~~~^~~~~~~~~~~~~~~~~
kyoto.cpp:18:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |         scanf("%d", a + i);
      |         ~~~~~^~~~~~~~~~~~~
kyoto.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         scanf("%d", b + i);
      |         ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...