Submission #1234069

#TimeUsernameProblemLanguageResultExecution timeMemory
1234069yixuan19Bouquet (EGOI24_bouquet)C++20
8 / 100
50 ms19900 KiB
#include <iostream> #include <utility> #include <vector> #include <algorithm> using namespace std; const int decalage = (1<<18); int tab[2*decalage]; void modify(int ind, int new_val){ tab[ind] = new_val; while (ind > 1){ ind/=2; tab[ind] = max(tab[ind*2], tab[ind*2+1]); } } int query(int l, int r){ if (l == r) return tab[l]; if (l%2 == 1){ return max(tab[l], query(l+1,r)); } if (r%2 == 0){ return max(tab[r], query(l,r-1)); } return query(l/2,r/2); } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, l, r; cin >> N; int skipped = 0; int ans = 0; vector<pair<int,int> > tulips; vector<vector<pair<int,int> > > add (N*2); for (int i = 0; i < N; ++i){ cin >> l >> r; tulips.push_back(make_pair(l,r)); } int dp[N]; int maxi = 0; for (int i = 0; i < N; ++i){ dp[i] = 0; } for (int i = 0; i < N; ++i){ // for (auto s: add){ // for (auto p: s){ // cout<<p.first<<' '<<p.second<<' '; // } // cout<<endl; // } if (add[i].size() > 0){ for (auto p: add[i]){ modify(p.first+decalage,dp[p.first]); } } // for (int i = decalage; i < decalage+N; ++i){ // cout<<tab[i]<<' '; // } // cout<<endl; // cout<<"querying "<<i<<" 0 to "<<max(i-tulips[i].first-1,0)<<endl; // cout<<"result "<<query(decalage,max(i-tulips[i].first-1,0) + decalage)<<endl; dp [i] = query(decalage,max(i-tulips[i].first-1,0) + decalage) + 1; add[tulips[i].second + i +1].push_back(make_pair(i,dp [i])); // for (int i = 0; i < N; ++i){ // cout<<dp[i]<<' '; // } // cout<<endl; // cout<<endl; } maxi = 0; // for (int i = 0; i < N; ++i){ // cout<<dp[i]<<' '; // } // cout<<endl; for (int i = 0; i < N; ++i ){ maxi = max(maxi, dp[i]); } cout<<maxi<<endl; }
#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...