Submission #6507997
Source Code Expand
#include <iostream> #include <vector> #include <algorithm> #define ll long long using namespace std; int main() { ll N, A, B; cin >> N >> A >> B; vector<ll> h(N); for(ll i=0; i<N; ++i){ cin >> h[i]; } sort(h.begin(), h.end(), greater<ll>()); if(N==1){ cout << (h[0]+A-1)/A << endl; return 0; } if(h[0]<=A && h[1]<=B){ cout << 1 << endl; return 0; } ll left=1, right=(h[0]+B-1)/B; while(left+1<right){ ll mid=(left+right+1)/2, cnt=0; for(ll i=0; i<N; ++i){ if(h[i]>B*mid) cnt += (h[i]-B*mid+A-B-1)/(A-B); else break; } if(cnt<=mid) right=mid; else left=mid; } cout << right << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Widespread |
User | ward1302 |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 713 Byte |
Status | AC |
Exec Time | 77 ms |
Memory | 1024 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | a01, a02, a03 |
All | a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
a01 | AC | 1 ms | 256 KB |
a02 | AC | 1 ms | 256 KB |
a03 | AC | 1 ms | 256 KB |
b04 | AC | 1 ms | 256 KB |
b05 | AC | 45 ms | 1024 KB |
b06 | AC | 77 ms | 1024 KB |
b07 | AC | 67 ms | 1024 KB |
b08 | AC | 62 ms | 1024 KB |
b09 | AC | 48 ms | 1024 KB |
b10 | AC | 48 ms | 1024 KB |
b11 | AC | 49 ms | 1024 KB |
b12 | AC | 49 ms | 1024 KB |
b13 | AC | 70 ms | 1024 KB |