debug求助
查看原帖
debug求助
1036180
ChampionCyan楼主2024/1/18 11:58

戳我看题

#include <bits/stdc++.h>
using namespace std;
int a[1001], dp[1001];

int find(int p) {
	for (int i = p - 2; i >= 1; i--)
		if (a[i] + (1 << (p - i - 1)) >= a[p])
			return p - i - 1;
	return 0;
}

int main() {
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf("%d", &a[i]);
	for (int i = 2; i <= n; i++) {
		if (a[i] - a[i - 1] <= 1)
			dp[i] = dp[i - 1] + 1;
		else if (find(i))
			dp[i] = dp[i - 1] + find(i) + 1;
        else {
			printf("-1\n");
			return 0;
		}
	}
    printf("%d\n", dp[n]);
	return 0;
}
2024/1/18 11:58
加载中...