제출 #397418

#제출 시각아이디문제언어결과실행 시간메모리
397418Nicholas_PatrickBuilding Bridges (CEOI17_building)C++17
30 / 100
3058 ms4392 KiB
#include <cstdio> #include <queue> using namespace std; struct line{ long long m, c; line(long long m, long long c):m(m), c(c){} long long eval(long long x){ return m*x+c; } }; int main(){ int n; scanf("%d", &n); vector<int> h(n), w(n); for(int& i: h) scanf("%d", &i); long long sumw=0; for(int& i: w){ scanf("%d", &i); sumw+=i; i=-i; } vector<line> ch; ch.emplace_back(-2*h[0], (long long)h[0]*h[0]+w[0]); for(int i=1; i+1<n; i++){ long long cost=1e18; for(auto& j: ch) cost=min(cost, j.eval(h[i])); cost+=(long long)h[i]*h[i]+w[i]; ch.emplace_back(-2*h[i], (long long)h[i]*h[i]+cost); } long long ans=1e18; for(auto& j: ch) ans=min(ans, j.eval(h[n-1])); ans+=(long long)h[n-1]*h[n-1]+w[n-1]+sumw; printf("%lld\n", ans); }

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

building.cpp: In function 'int main()':
building.cpp:14:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   14 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
building.cpp:17:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   17 |   scanf("%d", &i);
      |   ~~~~~^~~~~~~~~~
building.cpp:20:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   20 |   scanf("%d", &i);
      |   ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...