제출 #1184936

#제출 시각아이디문제언어결과실행 시간메모리
1184936asli_bgGym Badges (NOI22_gymbadges)C++20
0 / 100
2094 ms365872 KiB
#include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int,int> pii; typedef vector<int> vi; typedef vector<pii> vii; typedef vector<bool> vb; #define fi first #define se second #define pb push_back #define mid (l+r)/2 #define all(x) x.begin(),x.end() #define FOR(i,a) for(int i=0;i<(a);i++) #define FORE(i,a,b) for(int i=(a);i<(b);i++) #define cont(x) for(auto el:x) cout<<el<<' ';cout<<endl; #define contp(x) for(auto el:x) cout<<el.fi<<'-'<<el.se<<' ';cout<<endl; #define sp <<" "<< #define DEBUG(x) cout<<(#x) sp x<<endl const int INF=1e18; const int MAXN=5e5+5; map<int,int> dp[MAXN]; bool mm(pii a,pii b){ if(a.se==b.se) return a.fi<b.fi; return a.se<b.se; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; vii a(n+1); FORE(i,1,n+1) cin>>a[i].fi; FORE(i,1,n+1) cin>>a[i].se; sort(all(a),mm); //contp(a); int res=1; dp[0][0]=0; FORE(i,1,n+1){ //contp(dp[i-1]); for(auto el:dp[i-1]){ int grup=el.fi; int mn=el.se; if(dp[i][grup]==0) dp[i][grup]=dp[i-1][grup]; dp[i][grup]=min(dp[i][grup],dp[i-1][grup]); if(dp[i-1][grup]<=a[i].se){ if(dp[i][grup+1]==0) dp[i][grup+1]=dp[i-1][grup]+a[i].fi; dp[i][grup+1]=min(dp[i][grup+1],dp[i-1][grup]+a[i].fi); } res=max(res,grup); } } for(auto el:dp[n]) res=max(res,el.fi); cout<<res<<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...