제출 #1167336

#제출 시각아이디문제언어결과실행 시간메모리
1167336uranhishigBouquet (EGOI24_bouquet)C++17
46 / 100
38 ms5084 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define all(a) (a).begin(),(a).end()
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)

const int mx = 2e5 + 9;

signed main(){
	int n;	cin >> n;
	vector<int> l(n);
	vector<int> r(n);
	for (int i = 0; i < n; i++) {
		cin >> l[i] >> r[i];
	}
	int dp[n + 1];
	for (int i = 0; i <= n; i++) {
		dp[i] = 1;
	}
	int ans = 0;
	if (n <= 1000) {
		for (int i = 1; i < n; i++) {
			for (int j = 0; j < i - l[i]; j++) {
				if (r[j] < i - j) {
					dp[i] = max(dp[i], dp[j] + 1);
				}
			}
			ans = max(dp[i], ans);
		}
		cout << ans;
		return 0;
	}
	for (int i = 1; i < n; i++) {
		for (int j = max(0ll, i - l[i] - 10) ; j < i - l[i]; j++) {
			if (r[j] < i - j) {
				dp[i] = max(dp[i], dp[j] + 1);
			}
		}
		ans = max(dp[i], ans);
	}
	cout << ans << endl;
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...