# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
525379 | TheKingAleks | Skyline (IZhO11_skyline) | C++14 | 60 ms | 48644 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int MAX_N = 302;
const int MAX_H = 202;
const int INF = 1e9+7;
int n, a[MAX_N], dp[MAX_N][MAX_H][MAX_H];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
}
for(int i=0; i<MAX_N; i++)
{
for(int j=0; j<MAX_H; j++)
{
for(int k=0; k<MAX_H; k++)
{
dp[i][j][k] = INF;
}
}
}
for(int i=a[1]; i>=0; i--)
{
dp[1][i][0] = (a[1]-i)*3;
}
for(int i=2; i<=n; i++)
{
for(int k=a[i-1]; k>=0; k--)
{
dp[i][a[i]][k] = min(dp[i][a[i]][k], dp[i-1][k][0]);
}
for(int j=a[i]; j>=0; j--)
{
for(int k=a[i-1]; k>=0; k--)
{
dp[i][j][k] = min(dp[i][j][k], dp[i][j+1][k] + 3);
}
}
for(int j=a[i]-1; j>=0; j--)
{
for(int k=a[i-1]-1; k>=0; k--)
{
dp[i][j][k] = min(dp[i][j][k], dp[i][j+1][k+1] + 5);
}
}
for(int tr=min({a[i-1],a[i],a[i+1]}); tr>=0; tr--)
{
for(int j=tr; j<=a[i]; j++)
{
dp[i+1][a[i+1]-tr][j-tr] = min(dp[i+1][a[i+1]-tr][j-tr], dp[i][j][tr] + 7*tr);
}
}
}
cout<<dp[n][0][0]<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |