Submission #149989

#TimeUsernameProblemLanguageResultExecution timeMemory
149989(παρα)γεμιστά (#200)King of Chairs (FXCUP4_chairs)C++17
55 / 100
212 ms28608 KiB
#include "king.h" #include<map> #include<vector> #include<algorithm> #include<iostream> #define ll long long #define rep(i,a,b) for(int i = a;i < b;i++) #define MAXN 300003 long long SendInfo(std::vector<int> W, std::vector<int> C) { int n = W.size(); int cur = 0; sort(W.rbegin(),W.rend()); sort(C.rbegin(),C.rend()); rep(i,0,n) { if(W[i] <= C[cur]) { cur++; } } return W[n-cur]; }
#include "vassal.h" #include<map> #include<vector> #include<iostream> #include<algorithm> #include<set> #define ll long long #define pi pair < ll,ll > #define mp(a,b) make_pair(a,b) #define rep(i,a,b) for(int i = a;i < b;i++) #define MAXN 1000003 #define INF 1e17 using namespace std; long long maxi; set < pi > available; ll seg[4*MAXN]; void update(ll low,ll high,ll pos,ll slow) { if(low == high && low == slow) { seg[pos]++; return; } if(low > slow || high < slow) return; ll mid = (low+high)/2; update(low,mid,pos*2+1,slow); update(mid+1,high,pos*2+2,slow); seg[pos] = seg[pos*2+1]+seg[pos*2+2]; return; } ll query(ll low,ll high,ll pos,ll slow) { ll mid= (low+high)/2; if(low >= slow) { if(seg[pos] == 0) return -1; else if(low == high) return low; else if(seg[pos*2+1] > 0) return query(low,mid,pos*2+1,slow); else return query(mid+1,high,pos*2+2,slow); } if(high < slow) return -1; return max(query(low,mid,pos*2+1,slow),query(mid+1,high,pos*2+2,slow)); } void Init(long long B, std::vector<int> C) { int n = C.size(); sort(C.begin(),C.end()); maxi = B; rep(i,0,n) { available.insert(mp(C[i],i)); update(0,MAXN-1,0,C[i]); } return; } int Maid(int W){ if(W>maxi) return -1; else { set < pi >::iterator it = available.lower_bound(mp(W,0)); available.erase(it); return (*it).second; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...