| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1019604 | Minbaev | Skyline (IZhO11_skyline) | C++17 | 72 ms | 99200 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>
#include <ext/pb_ds/assoc_container.hpp> 
 
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast,unroll-loops")
 
using namespace std;
using namespace __gnu_pbds;
 
#define pb push_back
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define f first
#define s second
#define int long long
#define pii pair<int,int>
 
template<class T>bool umax(T &a,T b){if(a<b){a=b;return true;}return false;}
template<class T>bool umin(T &a,T b){if(b<a){a=b;return true;}return false;}
 
template<class T>
using Tree = tree<T, null_type, less<T>, rb_tree_tag,
    tree_order_statistics_node_update>;
 
const int inf = 1e17 + 7;
const int mod = 1e9 + 7;
const int N = 3e5 + 5;
int binpow(int a, int b){
	if(b == 0)return 1;
	if(b % 2 == 0){
		int c = binpow(a,b/2);
		return (c*c)%mod;
	}
	return (binpow(a,b-1)*a)%mod;
}
int divi(int a, int b){
	return (a*(binpow(b,mod-2)))%mod;
}
int n,m,k;
int dp[305][205][205];
void solve(){
	
	cin >> n;
	vector<int>v(n+1);
	for(int i = 1;i<=n;i++)
		cin >> v[i];
	
	for(int i = 1;i<=301;i++)
		for(int j = 0;j<=201;j++)
			for(int k = 0;k<=201;k++)
				dp[i][j][k] = inf;
	
	for(int i = 0;i<=v[1];i++)
		dp[2][v[2]][v[1]-i] = dp[1][v[1]-i][0] = i*3;
	
	
	for(int i = 2;i<=n;i++){
		for(int j = v[i];j>=0;j--)
			for(int k = v[i-1];k>=0;k--)
				umin(dp[i][j][k], dp[i][j+1][k]+3);
		
		for(int j = v[i];j>=0;j--)
			for(int k = v[i-1];k>=0;k--)
				umin(dp[i][j][k], dp[i][j+1][k+1]+5);
		
		if(n == i)continue;
		
		for (int j = min(v[i], min(v[i + 1], v[i - 1])); j >= 0; j--)
			for (int k = v[i]; k >= j; k--)
				dp[i + 1][v[i + 1] - j][k - j] = min(dp[i + 1][v[i + 1] - j][k - j], dp[i][k][j] + 7 * j);
		
	}
	
	cout << dp[n][0][0] << "\n";
	
	
	
	
}
 
 signed main()
{
//	freopen("seq.in", "r", stdin);
//  freopen("seq.out", "w", stdout);
	ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
	int tt=1;//cin>>tt;
	while(tt--)solve();
 
}
 
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
