Submission #1268660

#TimeUsernameProblemLanguageResultExecution timeMemory
1268660vicvicSan (COCI17_san)C++20
120 / 120
71 ms21012 KiB
#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 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...