#include <bits/stdc++.h>
#define int long long
using namespace std;
const int NMAX=40;
int n, k;
vector <pair <int, int>> a, b;
int h[NMAX+5], g[NMAX+5];
int sum[2*NMAX+5];
signed main ()
{
ios_base :: sync_with_stdio (0);
cin.tie (nullptr);
cin >> n >> k;
vector <int> vec;
for (int i=1;i<=n;i++)
{
cin >> h[i] >> g[i];
vec.push_back (h[i]);
}
vec.push_back (0);
sort (vec.begin(), vec.end());
vec.erase (unique (vec.begin(), vec.end()), vec.end());
for (int i=1;i<=n;i++)
{
h[i]=lower_bound (vec.begin(), vec.end(), h[i])-vec.begin();
}
a.push_back ({0, 0});
b.push_back ({vec.size()-1, 0});
for (int i=1;i<=n/2;i++)
{
int sz=a.size();
for (int j=0;j<sz;j++)
{
if (a[j].first<=h[i])
{
a.push_back ({h[i], g[i]+a[j].second});
}
}
}
for (int i=n;i>=n/2+1;i--)
{
int sz=b.size();
for (int j=0;j<sz;j++)
{
if (b[j].first>=h[i])
{
b.push_back ({h[i], g[i]+b[j].second});
}
}
}
sort (a.begin(), a.end(), [] (pair <int, int> a, pair <int, int> b) {return a.second<b.second;});
sort (b.begin(), b.end(), [] (pair <int, int> a, pair <int, int> b) {return a.second>b.second;});
int ptr=0, ret=0;
for (auto chestie : a)
{
while (ptr<b.size() && b[ptr].second+chestie.second>=k)
{
sum[b[ptr].first]++;
ptr++;
}
for (int i=chestie.first;i<vec.size();i++)
ret+=sum[i];
}
cout << ret;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |