Submission #886438

#TimeUsernameProblemLanguageResultExecution timeMemory
886438vjudge1Gym Badges (NOI22_gymbadges)C++17
9 / 100
157 ms17212 KiB
#pragma GCC optimize("Ofast,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,abm,mmx,sse4.2,fma,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define int uint64_t #define PB push_back #define sqr(a) ((a)*(a)) #define I insert #define F first #define S second bool cmp(pair<int,int> const&a, pair<int,int> const&b) { return make_pair(a.S, a.F) < make_pair(b.S, b.F); } int32_t main() { cin.tie(0)->sync_with_stdio(0); int n; cin>>n; vector<pair<int,int>> a(n); for(int i=0; i<n; i++) cin>>a[i].S; for(int i=0; i<n; i++) cin>>a[i].F; sort(a.begin(), a.end()); if(a[0].F==a[n-1].F) { sort(a.begin(), a.end(), cmp); int ans = 0, cur = 0; for(int i=0; i<n; i++) { if(cur <= a[0].F) { cur += a[i].S; ans++; } else { cout<<ans<<'\n'; return 0; } } cout<<ans<<'\n'; return 0; } vector<int> dp(n+1, UINT64_MAX); dp[0] = 0; for(int i=0; i<n; i++) { for(int j=n; j>0; j--) { dp[j] = min((dp[j-1]<=a[i].F)?(dp[j-1] + a[i].S):UINT64_MAX, dp[j]); } } for(int i=n; i>=0; i--) { if(dp[i]!=UINT64_MAX){ cout<<i<<'\n'; break; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...