Submission #468965

# Submission time Handle Problem Language Result Execution time Memory
468965 2021-08-30T09:52:43 Z Millad Liteh and Newfiteh (INOI20_litehfiteh) C++14
0 / 100
2 ms 2124 KB
// In the name of god
#include <bits/stdc++.h>

#define F first
#define S second
#define pb push_back
#define debug(x) cerr << #x << " : " << x << '\n'

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;

const ll maxn = 1e5 + 5;
const ll inf = 1e18;
const ll lg = 20;
ll n, a[maxn], dp[maxn][20][20], pw2[lg], ANS[maxn];
int main(){
        ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	pw2[0] = 1;
	for(ll i = 1; i < lg; i ++)pw2[i] = (pw2[i - 1] * 2ll);
	cin >> n;
	for(ll i = 0; i < n; i ++){
		cin >> a[i];
		for(ll j = 0; j < lg; j ++){
			if(a[i] < j)dp[i][0][j] = -1;
			else if(a[i] == j)dp[i][0][j] = 0;
			else if(a[i] == j + 1)dp[i][0][j] = 1;
			else dp[i][0][j] = -1;
		}
		ll d;
		ANS[i] = inf;
		for(ll j = 1; pw2[j] <= i + 1ll; j ++){
			for(ll k = 0; k < lg; k ++){
				d = inf;
				if((dp[i][j - 1][k + 1] != -1) && (dp[i - pw2[j - 1]][j - 1][k + 1] != -1))
					d = min(d, dp[i - pw2[j - 1]][j - 1][k + 1] + dp[i][j - 1][k + 1] + 1ll);
				if((dp[i][j - 1][k] != -1) && (dp[i - pw2[j - 1]][j - 1][k] != -1))
                                        d = min(d, dp[i - pw2[j - 1]][j - 1][k] + dp[i][j - 1][k]);
				if(d == inf)d = -1;
				dp[i][j][k] = d;
			}
			if(dp[i][j][0] != -1){
				if(pw2[j] == i + 1ll)ANS[i] = min(ANS[i], dp[i][j][0]);
				else if(ANS[i - pw2[j]] != -1)ANS[i] = min(ANS[i], dp[i][j][0] + ANS[i - pw2[j]]); 
			}
		}
		if(ANS[i] == inf)ANS[i] = -1;
	}
	cout << ANS[n - 1] << endl;
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:36:27: warning: iteration 19 invokes undefined behavior [-Waggressive-loop-optimizations]
   36 |     if((dp[i][j - 1][k + 1] != -1) && (dp[i - pw2[j - 1]][j - 1][k + 1] != -1))
      |         ~~~~~~~~~~~~~~~~~~^
Main.cpp:34:20: note: within this loop
   34 |    for(ll k = 0; k < lg; k ++){
      |                  ~~^~~~
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 2124 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 2124 KB Output isn't correct
2 Halted 0 ms 0 KB -