QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#408381 | #6401. Classic: N Real DNA Pots | evirir | TL | 322ms | 4804kb | C++20 | 3.3kb | 2024-05-10 09:05:52 | 2024-05-10 09:05:53 |
Judging History
answer
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
//using namespace __gnu_pbds;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#define watch(x) cout<<(#x)<<"="<<(x)<<'\n'
#define mset(d,val) memset(d,val,sizeof(d))
#define cbug if(DEBUG) cout
#define setp(x) cout<<fixed<<setprecision(x)
#define sz(x) (int)(x).size()
#define all(x) begin(x), end(x)
#define forn(i,a,b) for(int i=(a);i<(b);i++)
#define fore(i,a,b) for(int i=(a);i<=(b);i++)
#define pb push_back
#define F first
#define S second
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> ii;
typedef vector<ll> vi;
typedef vector<ii> vii;
//template<typename T>
//using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
void SD(int t=0){ cout<<"PASSED "<<t<<endl; }
ostream& operator<<(ostream &out, ii x){ out<<"("<<x.F<<","<<x.S<<")"; return out; }
template<typename T> void amax(T &a, T b){ a=max(a,b); }
template<typename T> void amin(T &a, T b){ a=min(a,b); }
struct Hash {
static uint64_t splitmix64(uint64_t x) {
// http://xorshift.di.unimi.it/splitmix64.c
x += 0x9e3779b97f4a7c15;
x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
return x ^ (x >> 31);
}
size_t operator()(uint64_t x) const {
static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
return splitmix64(x + FIXED_RANDOM);
}
};
const ll INF = ll(1e18);
const int MOD = 998244353;
const bool DEBUG = 0;
const int MAXN = 100005;
const int LG = 21;
class PointSegmentTree{
private:
int size_;
vector<ll> v;
void update(int p, ll val, int k, int l, int r)
{
if(p < l || r < p) return;
if(l == r){
v[k]=val; //modification
return;
}
int mid = (l+r)>>1;
update(p, val, k*2, l, mid);
update(p, val, k*2+1, mid+1, r);
v[k] = merge(v[k*2], v[k*2+1]);
}
ll query(int s, int e, int k, int l, int r)
{
if(e < l || r < s) return 0; //dummy value
if(s <= l && r <= e) return v[k];
int mid = (l+r)>>1;
ll lc = query(s, e, k*2, l, mid);
ll rc = query(s, e, k*2+1, mid+1, r);
return merge(lc, rc);
}
public:
PointSegmentTree(): v(vector<ll>()) {}
PointSegmentTree(int n){
for(size_=1;size_<n;) size_<<=1;
v.resize(size_*4);
}
//void reset(){}
inline ll merge(ll x, ll y){
return max(x, y);
}
inline void update(int p, ll val){
update(p, val, 1, 0, size_-1);
}
inline ll query(int l, int r){
return query(l, r, 1, 0, size_-1);
}
};
int n,K;
ll x[MAXN], y[MAXN];
bool solve(ld m)
{
ld sl[n]{};
forn(i,0,n) sl[i] = y[i] - m * x[i];
sort(sl, sl + n);
PointSegmentTree st(n);
int ans = 0;
forn(i,0,n)
{
int slp = lower_bound(sl, sl + n, y[i] - m * x[i], [](ld a, ld b){ return b - a >= 1e-9; }) - sl;
int q = st.query(0, slp) + 1;
st.update(slp, q);
ans = max(ans, q);
}
return ans >= K;
}
int main()
{
cin.tie(0)->sync_with_stdio(0);
cin>>n>>K;
forn(i, 0, n) cin >> x[i] >> y[i];
int bcnt = 0;
ld ans = 0;
for (ld L = -1e10L, R = 1e10L; bcnt < 100; bcnt++)
{
ld m = (L + R) / 2;
if (solve(m))
{
ans = m;
L = m;
}
else R = m;
}
setp(12);
cout << ans << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3860kb
input:
4 3 1 2 2 4 3 3 4 1
output:
-0.999999999000
result:
ok found '-1.0000000', expected '-1.0000000', error '0.0000000'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3800kb
input:
2 2 1 1 5 3
output:
0.500000000250
result:
ok found '0.5000000', expected '0.5000000', error '0.0000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3808kb
input:
2 2 222640995 547139825 489207317 725361095
output:
0.668581344646
result:
ok found '0.6685813', expected '0.6685813', error '0.0000000'
Test #4:
score: 0
Accepted
time: 21ms
memory: 3868kb
input:
1000 20 545612 774435015 828317 212155588 5294705 85926095 5648835 764528941 6159263 570820268 7177330 744079287 8446124 162286636 8735551 586528841 9263030 524140841 9505706 636254627 12111352 182639083 12750780 238494418 13149143 913232250 13382784 11485121 13699797 414697815 14263990 423817548 15...
output:
3.793210462287
result:
ok found '3.7932105', expected '3.7932105', error '0.0000000'
Test #5:
score: 0
Accepted
time: 21ms
memory: 4028kb
input:
1000 100 163505 684865289 2674260 837752883 2694530 150054425 2870791 236723512 3262597 800933455 3558503 905056977 4260872 45990808 4532415 268478572 5299228 546172100 6019224 12074540 6345109 747272172 6539452 449655551 7215852 676269961 9062989 769545718 9444242 874911191 10264016 341805234 10595...
output:
-1.860577876042
result:
ok found '-1.8605779', expected '-1.8605779', error '0.0000000'
Test #6:
score: 0
Accepted
time: 111ms
memory: 4196kb
input:
5000 10 34774 620025564 366562 278306777 446710 509672662 650220 70882120 824803 317731338 881144 257861254 1063458 61483347 1071840 639872836 1263842 30790337 1591940 346781076 1964777 814735151 2067497 63962255 2220071 379252135 2539054 428050443 2937092 423099578 3088992 959927412 3229098 9591796...
output:
134.621472807084
result:
ok found '134.6214728', expected '134.6214728', error '0.0000000'
Test #7:
score: 0
Accepted
time: 125ms
memory: 4212kb
input:
5000 20 199760 355854017 326334 308841311 562097 142603502 737215 739382649 740379 538515503 775788 515038260 817583 280515397 919169 892864353 972326 662840403 1344912 46143677 1550928 380148689 1589971 740794446 1638208 835030507 1707737 1806402 1736374 716485086 1738772 965202367 1855327 28929729...
output:
19.107398871059
result:
ok found '19.1073989', expected '19.1073989', error '0.0000000'
Test #8:
score: 0
Accepted
time: 1ms
memory: 3840kb
input:
100 80 3642237 433728851 3835922 596838254 4822541 903206579 11786229 71614574 28051109 568783761 37988181 991770771 56927147 913182266 80808317 468372188 96532943 867642142 97069884 869788913 104938691 736691068 115294599 927608069 130086679 135340679 143622561 267761236 147838354 653078316 1483162...
output:
-45.917501529517
result:
ok found '-45.9175015', expected '-45.9175015', error '0.0000000'
Test #9:
score: 0
Accepted
time: 3ms
memory: 3820kb
input:
300 300 186421 261109479 5746147 454165382 9237830 637520496 9851923 811263876 11414218 355514230 13089969 488595547 14673543 646754325 16206307 26512314 20111827 236176303 29494991 773939650 31542488 394434870 33151870 729247973 35483496 458610267 39685298 553345644 41333867 843739706 41339284 5952...
output:
-45869.322134022510
result:
ok found '-45869.3221340', expected '-45869.3221340', error '0.0000000'
Test #10:
score: 0
Accepted
time: 15ms
memory: 3852kb
input:
1000 2 747727 310492171 1468650 713980779 3789328 757125223 5320562 240087911 5661018 585322880 5727658 166258339 9628311 1509468 9663570 644887821 9705398 201079132 11009052 79093580 11528729 273302786 14435306 891929759 16986960 794877487 17773102 990984060 19350978 246181882 19465885 427225500 23...
output:
145656.485251216247
result:
ok found '145656.4852512', expected '145656.4852501', error '0.0000000'
Test #11:
score: 0
Accepted
time: 211ms
memory: 4692kb
input:
10000 5000 11343 928311929 52379 840203434 261042 695151644 263788 172667944 364610 152184226 379806 619677738 515566 816745302 517646 466302942 540027 475750734 543982 124168292 640523 238869630 691715 468722215 705165 919447299 779673 129298873 1006841 948863833 1308410 643990798 1342527 5696458 1...
output:
-1045.873718454844
result:
ok found '-1045.8737185', expected '-1045.8737185', error '0.0000000'
Test #12:
score: 0
Accepted
time: 290ms
memory: 4704kb
input:
10000 500 83515 736933811 214681 18821934 337773 255421593 373401 682078732 542837 930642686 743115 251178260 798454 390884216 1209834 124196728 1262528 560215146 1351188 9091629 1563890 525243183 1574212 997260354 1580426 699829078 1750092 395252098 1869757 67867660 1875112 226384476 2047018 328213...
output:
-5.629902788400
result:
ok found '-5.6299028', expected '-5.6299028', error '0.0000000'
Test #13:
score: 0
Accepted
time: 306ms
memory: 4544kb
input:
10000 300 1639 469147828 114667 8224138 144408 364515807 212973 961202084 398743 285809740 496841 927819708 534650 867558923 686967 588702382 696690 666164443 726922 781870146 872473 615520296 898161 178383389 985406 97264277 996652 703675454 1254375 530922354 1573412 745036174 1637763 177874295 167...
output:
-1.304150527632
result:
ok found '-1.3041505', expected '-1.3041505', error '0.0000000'
Test #14:
score: 0
Accepted
time: 322ms
memory: 4604kb
input:
10000 200 24361 355989436 67308 334706995 197996 808393732 208836 116843625 567811 484127866 694262 618656785 788342 790194385 849652 136657098 1029137 924171800 1203341 168259404 1211974 844956962 1214043 637541127 1420445 759167413 1655236 915436195 1657793 262449701 1691654 725474596 1767520 8976...
output:
-0.114468865279
result:
ok found '-0.1144689', expected '-0.1144689', error '0.0000000'
Test #15:
score: 0
Accepted
time: 315ms
memory: 4720kb
input:
10000 100 448934 906394555 475014 997626342 590053 178642728 875628 903888948 1212211 346009502 1241514 309493863 1340826 712829848 1680222 758240743 1794126 477146449 1817597 186052442 1981543 779426336 2021852 433135353 2185476 494699476 2298672 422164227 2516850 625380828 2646484 337316798 267075...
output:
1.035376804971
result:
ok found '1.0353768', expected '1.0353768', error '0.0000000'
Test #16:
score: 0
Accepted
time: 294ms
memory: 4788kb
input:
10000 50 40110 141597180 41162 930485122 87106 57859547 129179 279497823 217282 102811622 246011 688060074 527945 830469708 674775 425660310 781249 284422288 845105 393707471 1003702 918990189 1121790 534007402 1337016 917493002 1440969 636045451 1729947 231052670 1779758 199172396 1990895 270436931...
output:
5.115538367405
result:
ok found '5.1155384', expected '5.1155384', error '0.0000000'
Test #17:
score: 0
Accepted
time: 260ms
memory: 4612kb
input:
10000 20 192005 992303174 386824 5538930 652843 617355627 665819 922060802 675553 291515142 791249 384248576 854934 231142457 926022 596717008 932239 945932944 969019 474307451 1374561 126586755 1567083 106513004 1629151 116861834 1670295 988693473 1775518 799130552 1792436 888344340 1820264 3853242...
output:
41.567725410071
result:
ok found '41.5677254', expected '41.5677254', error '0.0000000'
Test #18:
score: 0
Accepted
time: 231ms
memory: 4656kb
input:
10000 10 266996 609205171 273102 735589575 277177 347655580 387543 606270266 469806 638663697 782692 72510150 796356 424656429 870781 260446185 926881 906882617 1343887 6609329 1382474 430796513 1550455 62337302 1552339 109538657 1629503 994097318 1808731 767302009 1877069 710955532 2206272 16406618...
output:
299.452481593764
result:
ok found '299.4524816', expected '299.4524816', error '0.0000000'
Test #19:
score: 0
Accepted
time: 215ms
memory: 4580kb
input:
10000 8 88029 227530654 223658 46422449 264166 625625697 310448 286795635 454903 177457515 464676 839404426 687127 463087924 691931 190423638 704573 856226776 765895 482811447 768088 644745751 835500 427038249 919699 469313878 1032714 947023480 1152691 976821799 1197844 123594183 1286309 353740491 1...
output:
628.852979484584
result:
ok found '628.8529795', expected '628.8529795', error '0.0000000'
Test #20:
score: 0
Accepted
time: 202ms
memory: 4804kb
input:
10000 5 62217 249235177 306503 34074294 477055 572914538 702905 839767773 704209 612222410 816080 392889606 861062 830566450 972418 999799224 1062852 573719854 1105278 478171882 1109703 803913526 1131824 820380955 1232243 740998431 1346238 6361814 1557725 497005895 1644920 318176224 1675339 14779790...
output:
3264.755751367308
result:
ok found '3264.7557514', expected '3264.7557514', error '0.0000000'
Test #21:
score: 0
Accepted
time: 194ms
memory: 4620kb
input:
10000 2 81106 607376188 121099 653129920 571348 183766890 852412 97772619 885397 341954595 972399 314971005 1253363 493012266 1295891 104142101 1298100 659809152 1322651 842128537 1432357 889452372 1451236 918756370 1486954 86311912 1536631 770732857 1592430 17189991 1616977 439129337 1724413 646888...
output:
12931122.780823717286
result:
ok found '12931122.7808237', expected '12931122.7792642', error '0.0000000'
Test #22:
score: -100
Time Limit Exceeded
input:
100000 50000 15057 358350989 39346 497842396 51813 37907067 52457 435919654 53100 875724585 58397 718257424 59957 37620444 67204 427984803 74005 329917739 74035 317952573 75181 793673458 79739 677360131 90807 331908646 102249 97003766 103081 951437983 105105 433577588 105745 722249067 111137 8229696...