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...