Submission #473538

#TimeUsernameProblemLanguageResultExecution timeMemory
473538_L__San (COCI17_san)C++17
0 / 120
1088 ms10636 KiB
// This code is written by _L__ #include <bits/stdc++.h> using namespace std; #define endl '\n' #define F_word ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL); typedef long long ll; typedef long double ld; const ll mod = 1e9+7, N = 5e5+13, inf = 1e11; const ld E = 1e-6; #define ff first #define ss second int main(void){ F_word; ll n, k; cin >> n >> k; ll h[n], c[n]; for(int i = 0; i < n; ++i)cin >> h[i] >> c[i]; vector<pair<ll, ll>> v; ll x = (n/2), b = (n-(n/2)); for(int i = 0; i < (1<<x); ++i){ ll hg = 0, gg = 0; for(int j = 0; j < x; ++j){ if(i&(1<<j)){ if(hg <= h[j]){hg = h[j]; gg += c[j];} else{gg = -1; break;} } } if(gg != -1)v.push_back({hg, gg}); } unordered_map<ll, vector<ll>> mp; for(int i = 0; i < (1<<b); ++i){ ll hg = 0, gg = 0; for(int j = 0; j < b; ++j){ if(i&(1<<j)){ if(hg <= h[j+x]){hg = h[j+x]; gg += c[j+x];} else {gg = -1; break;} } } if(gg == -1) continue; if(i == 0){mp[inf].push_back(0); continue;} for(int j = 0; j < b; ++j){ if(i&(1<<j)){ mp[h[j+x]].push_back(gg); break; } } } ll ans = 0; for(auto i: mp) sort(i.ss.begin(), i.ss.end()); for(auto i: v){ for(auto u: mp){ if(u.ff >= i.ff){ ll z = lower_bound(u.ss.begin(), u.ss.end(), max(k-i.ss, 0ll))-u.ss.begin(); ans += max((ll)u.ss.size()-z,0ll); } } } cout << ans << 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...
#Verdict Execution timeMemoryGrader output
Fetching results...