QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#30539 | #2464. Taxed Editor | sinbad# | AC ✓ | 153ms | 6672kb | C++17 | 4.5kb | 2022-04-29 22:34:19 | 2022-04-29 22:34:21 |
Judging History
answer
#define LOCAL
#define _USE_MATH_DEFINES
#include <array>
#include <cassert>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <complex>
#include <cmath>
#include <numeric>
#include <bitset>
#include <functional>
#include <random>
#include <ctime>
using namespace std;
template <typename A, typename B>
ostream& operator <<(ostream& out, const pair<A, B>& a) {
out << "(" << a.first << "," << a.second << ")";
return out;
}
template <typename T, size_t N>
ostream& operator <<(ostream& out, const array<T, N>& a) {
out << "["; bool first = true;
for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "]";
return out;
}
template <typename T>
ostream& operator <<(ostream& out, const vector<T>& a) {
out << "["; bool first = true;
for (auto v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "]";
return out;
}
template <typename T, class Cmp>
ostream& operator <<(ostream& out, const set<T, Cmp>& a) {
out << "{"; bool first = true;
for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "}";
return out;
}
template <typename T, class Cmp>
ostream& operator <<(ostream& out, const multiset<T, Cmp>& a) {
out << "{"; bool first = true;
for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "}";
return out;
}
template <typename U, typename T, class Cmp>
ostream& operator <<(ostream& out, const map<U, T, Cmp>& a) {
out << "{"; bool first = true;
for (auto& p : a) { out << (first ? "" : ", "); out << p.first << ":" << p.second; first = 0;} out << "}";
return out;
}
#ifdef LOCAL
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
#else
#define trace(...) 42
#endif
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << ": " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');
cerr.write(names, comma - names) << ": " << arg1 << " |";
__f(comma + 1, args...);
}
template <class T> auto vect(const T& v, int n) { return vector<T>(n, v); }
template <class T, class... D> auto vect(const T& v, int n, D... m) {
return vector<decltype(vect(v, m...))>(n, vect(v, m...));
}
using int64 = long long;
using int128 = __int128_t;
using ii = pair<int, int>;
#define SZ(x) (int)((x).size())
template <typename T> static constexpr T inf = numeric_limits<T>::max() / 2;
const int MOD = 1e9 + 7;
// const int MOD = 998244353;
// mt19937 mrand(random_device{}());
// int rnd(int x) { return mrand() % x; }
mt19937_64 mrand(random_device{}());
int64 rnd(int64 x) { return mrand() % x; }
int lg2(int64 x) { return sizeof(int64) * 8 - 1 - __builtin_clzll(x); }
template <class T> void out(const vector<T>& a) { for (int i = 0; i < SZ(a); ++i) cout << a[i] << " \n"[i + 1 == SZ(a)]; }
template <class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
template <class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }
template <class T> void dedup(vector<T>& v) { sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); }
void add_mod(int& x, int y) { x += y; if (x >= MOD) x -= MOD; }
void sub_mod(int& x, int y) { x += MOD - y; if (x >= MOD) x -= MOD; }
struct fast_ios {
fast_ios() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
cout << fixed << setprecision(10);
};
} fast_ios_;
int main() {
int n, m;
cin >> n >> m;
m = n - m;
vector<array<int64, 2>> a(n);
for (int i = 0; i < n; ++i) cin >> a[i][0] >> a[i][1];
sort(a.begin(), a.end(),
[&](const auto& L, const auto& R) {
return L[1] < R[1];
});
int64 low = 1, high = 1e14;
while (low != high) {
int64 mid = (low + high) / 2;
priority_queue<int64> Q;
int64 sum = 0, cnt = 0;
for (auto& [len, d] : a) {
// trace(mid, len, d, sum);
if (mid * d - sum >= len) {
++cnt;
sum += len;
Q.push(len);
} else {
if (Q.size() && sum - Q.top() + len < sum) {
sum = sum - Q.top() + len;
Q.pop();
Q.push(len);
}
}
}
if (cnt < m) {
low = mid + 1;
} else {
high = mid;
}
}
cout << high << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 4ms
memory: 3720kb
input:
100 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
output:
100
result:
ok single line: '100'
Test #2:
score: 0
Accepted
time: 3ms
memory: 3644kb
input:
100 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 6...
output:
1
result:
ok single line: '1'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3660kb
input:
100 99 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 ...
output:
1
result:
ok single line: '1'
Test #4:
score: 0
Accepted
time: 3ms
memory: 3660kb
input:
100 0 1 40 1 41 1 42 1 3 1 20 1 4 1 5 1 86 1 87 1 13 1 14 1 1 1 15 1 16 1 18 1 19 1 21 1 22 1 93 1 94 1 74 1 95 1 96 1 23 1 25 1 29 1 30 1 31 1 53 1 54 1 88 1 89 1 17 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 75 1 55 1 56 1 57 1 58 1 59 1 60 1 61 1 62 1 63 1 64 1 65 1 66 1 67 1 68 1 69 1 70 1 71 1 72 1 73 1 ...
output:
1
result:
ok single line: '1'
Test #5:
score: 0
Accepted
time: 3ms
memory: 3716kb
input:
100 0 2 40 2 41 2 42 2 3 2 20 2 4 2 5 2 86 2 87 2 13 2 14 2 1 2 15 2 16 2 18 2 19 2 21 2 22 2 93 2 94 2 74 2 95 2 96 2 23 2 25 2 29 2 30 2 31 2 53 2 54 2 88 2 89 2 17 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 75 2 55 2 56 2 57 2 58 2 59 2 60 2 61 2 62 2 63 2 64 2 65 2 66 2 67 2 68 2 69 2 70 2 71 2 72 2 73 2 ...
output:
2
result:
ok single line: '2'
Test #6:
score: 0
Accepted
time: 3ms
memory: 3716kb
input:
100 1 2 40 2 41 2 42 2 3 2 20 2 4 2 5 2 86 2 87 2 13 2 14 2 1 2 15 2 16 2 18 2 19 2 21 2 22 2 93 2 94 2 74 2 95 2 96 2 23 2 25 2 29 2 30 2 31 2 53 2 54 2 88 2 89 2 17 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 75 2 55 2 56 2 57 2 58 2 59 2 60 2 61 2 62 2 63 2 64 2 65 2 66 2 67 2 68 2 69 2 70 2 71 2 72 2 73 2 ...
output:
2
result:
ok single line: '2'
Test #7:
score: 0
Accepted
time: 3ms
memory: 3584kb
input:
100 50 2 40 2 41 2 42 2 3 2 20 2 4 2 5 2 86 2 87 2 13 2 14 2 1 2 15 2 16 2 18 2 19 2 21 2 22 2 93 2 94 2 74 2 95 2 96 2 23 2 25 2 29 2 30 2 31 2 53 2 54 2 88 2 89 2 17 2 6 2 7 2 8 2 9 2 10 2 11 2 12 2 75 2 55 2 56 2 57 2 58 2 59 2 60 2 61 2 62 2 63 2 64 2 65 2 66 2 67 2 68 2 69 2 70 2 71 2 72 2 73 2...
output:
1
result:
ok single line: '1'
Test #8:
score: 0
Accepted
time: 31ms
memory: 6672kb
input:
100000 0 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 10000...
output:
100000000000000
result:
ok single line: '100000000000000'
Test #9:
score: 0
Accepted
time: 65ms
memory: 4772kb
input:
46786 26474 972646846 4838 253000777 9895 844739410 3953 740725829 2432 569863348 8835 775252385 8003 346981464 6141 305937051 1941 499745631 6513 398984816 9556 387704708 890 89926161 9661 760454705 2946 910581384 3616 946296579 5216 964100071 7349 178904063 104 732671873 9766 468959891 3677 214314...
output:
442908028
result:
ok single line: '442908028'
Test #10:
score: 0
Accepted
time: 3ms
memory: 3664kb
input:
3 1 450 9 500 6 300 4
output:
84
result:
ok single line: '84'
Test #11:
score: 0
Accepted
time: 124ms
memory: 6124kb
input:
81309 13105 512549036 5388 583961403 7878 110696896 3661 731681027 4653 337863237 4567 548796175 5675 190209109 7645 815384070 5308 202574729 6532 78478209 3793 661679100 454 538303356 1718 109054503 221 374399737 7036 377635569 6195 224409233 5851 224768256 6805 292807834 3126 112440792 2998 160795...
output:
2841922681
result:
ok single line: '2841922681'
Test #12:
score: 0
Accepted
time: 153ms
memory: 6092kb
input:
86721 26489 894760820 3552 871291232 2650 552121265 4036 435080577 8784 384159611 4477 718837434 8253 744757790 8434 28957327 8793 938435157 2703 516771922 2576 736642972 5469 798577299 5740 949187275 60 647392841 8964 131345535 3787 231773479 6867 254396458 6066 386077792 3047 939085239 7036 455227...
output:
2090454962
result:
ok single line: '2090454962'
Test #13:
score: 0
Accepted
time: 100ms
memory: 5112kb
input:
53057 17674 79202175 4880 898335481 9387 127229311 9889 984428283 7633 486305793 5920 722051684 8168 4727594 1857 392726961 9133 803862897 2796 74446345 5179 498235459 1103 10664792 3352 741667933 1779 808193631 7524 268541298 6149 478158729 2613 489066136 6682 149571745 9911 689142821 2273 77793397...
output:
1176575271
result:
ok single line: '1176575271'