제출 #1229035

#제출 시각아이디문제언어결과실행 시간메모리
1229035ripolasBouquet (EGOI24_bouquet)C++20
24 / 100
21 ms3564 KiB
#include <bits/stdc++.h> using namespace std; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); bool firstCode = true; bool smallLR = true; int n; cin>>n; vector<pair<int,int>> a(n); vector<int> dp(n,1); for(int i = 0;i<n;i++){ int l,r; cin>>l>>r; if(r!=0&&l!=r){ firstCode = false; } if(r>2||l>2){ smallLR = false; } a[i] = {l,r}; } if(!firstCode){ int ans = 0; for(int i = 0;i<n;i++){ if(!smallLR){ for(int j = 0;j<i;j++){ if(max(a[j].second,a[i].first)<i-j){ dp[i] = max(dp[i],dp[j]+1); } } }else{ for(int j = i-5;j<i;j++){ if(max(a[j].second,a[i].first)<i-j){ dp[i] = max(dp[i],dp[j]+1); } } } ans= max(ans,dp[i]); } cout<<ans<<endl; }else{ vector<int> maxUntil(n,1); for(int i = 0;i<n;i++){ if(i-a[i].first-1>=0){ dp[i] = max(dp[i],maxUntil[i-a[i].first-1]+1); }else{ dp[i] = 1; } if(i!=0){ maxUntil[i] = max(maxUntil[i-1],dp[i]); }else{ maxUntil[i] = dp[i]; } } cout<<maxUntil[n-1]<<endl; } } /* 4 1 0 1 0 1 0 4 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...