Submission #1234727

#TimeUsernameProblemLanguageResultExecution timeMemory
1234727MuhammadSaram송신탑 (IOI22_towers)C++20
0 / 100
4030 ms3920 KiB
#include "towers.h" #include <bits/stdc++.h> using namespace std; #define all(v) v.begin(), v.end() const int M = 1e5 + 1; int n,fen[M],le[M]; vector<int> a; void modify(int p,int x) { while (p<=n) fen[p]=max(fen[p],x),p+=p&-p; } int get(int p) { int ans=0; while (p) ans=max(ans,fen[p]),p^=p&-p; return ans; } void init(int N, vector<int> A) { n=N,a=A; } int max_towers(int l, int r, int d) { set<pair<int,int>> se; for (int i=r;i>=l;i--) { while (se.size() && se.begin()->first<=a[i]-d) le[se.begin()->second]=i,se.erase(se.begin()); le[i]=-1,se.insert({a[i],i}); } int ans=1; for (int i=l;i<=r;i++) ans=max(ans,get(le[i]+1)+1),modify(i+1,get(le[i]+1)+1); return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...