class Solution {
public:
vector<int>fen;
int bestTeamScore(vector<int>& scores, vector<int>& ages) {
vector<pair<int,int>>vpair;
for(int i=0;i<size(scores);i++)vpair.emplace_back(scores[i],ages[i]);
sort(begin(vpair),end(vpair));
int mage=0;
for(int&i:ages)mage=max(mage,i);
fen.resize(mage+1);
auto query=[&](int k){int v=-1000000007;do v=max(v,fen[k]);while(k-=k&-k);return v;};
auto update=[&](int k,int v){do fen[k]=max(fen[k],v);while(k+=k&-k,k<=mage);return v;};
int ans=-1000000007;
for(auto[s,a]:vpair)
{
int b=s+query(a);
update(a,b);
ans=max(ans,b);
}
return ans;
}
};
펜윅 트리를 사용한 풀이입니다
루비 어디갔어
루비로 짜도 되는데 한번씩 C++로 짜서 내요 루비가 느려서 억까당하는 경우가 없는지 알 수가 없어서