This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <set>
#include <map>
#include <iomanip>
#include <stack>
#include <queue>
#include <deque>
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define pb push_back
#define ppb pop_back
#define mkp make_pair
#define F first
#define S second
#define show(a) cerr << #a <<" -> "<< a <<"\n"
#define fo(a, b, c, d) for(int (a) = (b); (a) <= (c); (a) += (d))
#define foo(a, b, c ,d) for(int (a) = (b); (a) >= (c); (a) -= (d))
//#define int ll
const int N = 6e5;
const int INF = 1e9;
int n;
ll m, d, a[N];
bool check(int len) {
int SecHalf = -1;
for(int i = len; i >= 1; --i) {
if(m - d <= a[i]) {
SecHalf = i;
break;
}
}
//if(a[SecHalf] - d >= m) return 1;
ll pos = 0;
for(int i = 1; i <= len; ++i) {
if(i == SecHalf)
continue;
pos = pos + max(a[i] - abs(pos - d), 0ll);
}
pos = pos + max(a[SecHalf] - abs(pos - d), 0ll);
return (pos >= m);
}
main () {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> m >> d >> n;
fo(i, 1, n, 1) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
reverse(a + 1, a + n + 1);
//cout << check(3);
int l = 1, r = n;
while(l < r) {
int mid = (l + r) / 2;
if(check(mid)) r = mid;
else l = mid + 1;
}
if(!check(r)) {
cout << 0;
return 0;
}
cout << r;
return 0;
}
Compilation message (stderr)
tak.cpp:54:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
main () {
^
# | 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... |
# | 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... |