Submission #221875

#TimeUsernameProblemLanguageResultExecution timeMemory
221875MKopchevBuilding Bridges (CEOI17_building)C++14
30 / 100
3072 ms4108 KiB
#include<bits/stdc++.h>
using namespace std;
const int nmax=1e5+42;

int n;

long long h[nmax],w[nmax],pref[nmax];

long long dp[nmax];

int main()
{
    scanf("%i",&n);

    for(int i=1;i<=n;i++)scanf("%lld",&h[i]);

    for(int i=1;i<=n;i++)scanf("%lld",&w[i]);

    for(int i=1;i<=n;i++)pref[i]=pref[i-1]+w[i];

    dp[1]=0;

    for(int j=2;j<=n;j++)
    {
        dp[j]=1e18;
        for(int i=j-1;i>=1;i--)
        {
            long long s_1=h[j]*h[j]+pref[j-1];

            long long s_2=h[i]*h[i]-pref[i]+dp[i];

            long long s_3=-2*h[i]*h[j];

            dp[j]=min(dp[j],s_1+s_2+s_3);
        }
        //cout<<j<<" -> "<<dp[j]<<endl;
    }

    printf("%lld\n",dp[n]);
    return 0;
}

Compilation message (stderr)

building.cpp: In function 'int main()':
building.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i",&n);
     ~~~~~^~~~~~~~~
building.cpp:15:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(int i=1;i<=n;i++)scanf("%lld",&h[i]);
                          ~~~~~^~~~~~~~~~~~~~
building.cpp:17:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(int i=1;i<=n;i++)scanf("%lld",&w[i]);
                          ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...