Submission #165230

# Submission time Handle Problem Language Result Execution time Memory
165230 2019-11-26T06:54:56 Z Lightning Taxis (POI13_tak) C++14
100 / 100
210 ms 13620 KB
#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

tak.cpp:54:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {
       ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 3 ms 380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 4 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 1272 KB Output is correct
2 Correct 5 ms 760 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 24 ms 1656 KB Output is correct
2 Correct 23 ms 1784 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 32 ms 2604 KB Output is correct
2 Correct 85 ms 5340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 94 ms 7032 KB Output is correct
2 Correct 131 ms 8872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 210 ms 13620 KB Output is correct
2 Correct 154 ms 10380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 135 ms 13504 KB Output is correct
2 Correct 200 ms 13112 KB Output is correct