QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#342762 | #601. 李超树 | Ishy# | AC ✓ | 537ms | 125296kb | C++14 | 3.3kb | 2024-03-01 16:42:52 | 2024-03-01 16:42:53 |
Judging History
answer
// Sea, You & Me
#include<bits/stdc++.h>
#define LL long long
#define DB double
#define MOD 1000000007
#define ls(x) (x << 1)
#define rs(x) (x << 1 | 1)
#define lowbit(x) ((-x) & x)
#define MP make_pair
#define MT make_tuple
#define VI vector<int>
#define VL vector<LL>
#define VII VI::iterator
#define VLI VL::iterator
#define all(x) x.begin(), x.end()
#define EB emplace_back
#define PII pair<int, int>
#define SI set<int>
#define SII SI::iterator
#define fi first
#define se second
using namespace std;
template<typename T> void chkmn(T &a, const T b) { (a > b) && (a = b); }
template<typename T> void chkmx(T &a, const T b) { (a < b) && (a = b); }
void Inc(int &a, const int &b) { ((a += b) >= MOD) && (a -= MOD); }
void Dec(int &a, const int &b) { ((a -= b) < 0) && (a += MOD); }
void Mul(int &a, const int &b) { a = 1LL * a * b % MOD; }
void Sqr(int &a) { a = 1LL * a * a % MOD; }
int inc(const int &a, const int &b) { return (a + b >= MOD) ? a + b - MOD : a + b; }
int dec(const int &a, const int &b) { return (a - b < 0) ? a - b + MOD : a - b; }
int mul(const int &a, const int &b) { return 1LL * a * b % MOD; }
int sqr(const int &a) { return 1LL * a * a % MOD; }
int qwqmi(int x, int k = MOD - 2)
{
int res = 1;
while(k)
{
if(k & 1) Mul(res, x);
k >>= 1, Sqr(x);
}
return res;
}
template<typename T> void read(T &x)
{
x = 0;
int f = 1;
char ch = getchar();
while(!isdigit(ch))
{
if(ch == '-')
f = -1;
ch = getchar();
}
while(isdigit(ch))
{
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
x = x * f;
}
const int N = 4e5 + 5;
const LL INF = 4e18;
int n, Q, lid;
struct Line
{
LL k, b;
}line[N];
LL F(int id, LL x)
{
return line[id].k * x + line[id].b;
}
int root = 0;
struct LiChaoTree
{
int dop;
struct SegTree
{
int ls, rs;
int id;
}tr[N * 40];
void insert(int &p, LL l, LL r, LL L, LL R, int id)
{
if(!p) p = ++dop;
LL mid = l + (r - l) / 2;
if(l >= L && r <= R)
{
if(F(id, mid) < F(tr[p].id, mid)) swap(id, tr[p].id);
if(F(id, l) >= F(tr[p].id, l) && F(id, r) >= F(tr[p].id, r)) return;
if(F(id, l) < F(tr[p].id, l)) insert(tr[p].ls, l, mid, L, R, id);
else insert(tr[p].rs, mid + 1, r, L, R, id);
return;
}
if(mid >= L) insert(tr[p].ls, l, mid, L, R, id);
if(mid < R) insert(tr[p].rs, mid + 1, r, L, R, id);
}
LL query(int p, LL l, LL r, LL x)
{
if(!p) return INF;
LL res = F(tr[p].id, x);
// cerr << "!!! " << l << ' ' << r << ' ' << tr[p].id << ' ' << res << '\n';
LL mid = l + (r - l) / 2;
if(mid >= x) chkmn(res, query(tr[p].ls, l, mid, x));
else chkmn(res, query(tr[p].rs, mid + 1, r, x));
return res;
}
}T;
int main()
{
read(n), read(Q);
line[0].b = INF;
for(int i = 1; i <= n; ++i)
{
LL l, r, k, b;
read(l), read(r), read(k), read(b);
line[++lid] = (Line){k, b};
T.insert(root, -INF, INF, l, r - 1, lid);
}
for(int cas = 1; cas <= Q; ++cas)
{
int op; read(op);
if(op == 1)
{
LL x; read(x);
LL res = T.query(root, -INF, INF, x);
if(res == INF) puts("NO");
else printf("%lld\n", res);
}
else
{
LL l, r, k, b;
read(l), read(r), read(k), read(b);
line[++lid] = (Line){k, b};
T.insert(root, -INF, INF, l, r - 1, lid);
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 358ms
memory: 90424kb
input:
200000 200000 -999998847 -564701 0 0 -999993210 -562917 1 573969 -999989880 -560888 2 1147938 -999978625 -556992 3 1721907 -999976497 -554201 4 2295876 -999970456 -549858 5 2869845 -999961708 -549366 6 3443814 -999955817 -540635 7 4017783 -999950965 -539043 8 4591752 -999948875 -537042 9 5165721 -99...
output:
NO NO -50183563496000 -42956317210716 -49932020483680 3156971371995 -4205699747460 -50012287547303 161201413663722 127620184662654 -38152414490346 -6875394617322 -49441462985560 -10483501086163 -46614758184768 -7756362089800 150282043411500 1349780114496 107332409877630 6247978807520 45244266232880 ...
result:
ok 200000 lines
Test #2:
score: 0
Accepted
time: 537ms
memory: 125088kb
input:
200000 200000 -471243687 508625098 391807640 -342283806983648705 -340210383 47829053 -391880620 240209487116192693 -274545508 770445695 616772252 -144712167052367176 -880188114 -308896220 -693352586 -29355468444432145 381012675 658211153 -277370657 -223335522481190637 -695379495 -366915786 916546493...
output:
-1397453600647334843 -1029976041695367028 -1052910313176684616 -1818408630134327681 -1209457358134828750 -1718397108261908307 -1355662362476717627 -1314910767061006651 -1106268941848967229 -1898224683466047425 -1657509250418930516 -1221436786841522225 -1155460525928842979 -1903550645895237593 -14152...
result:
ok 100335 lines
Test #3:
score: 0
Accepted
time: 506ms
memory: 125296kb
input:
200000 200000 -735295803 194740970 -863012076 -698790457051536473 -561484685 878894370 -765835546 -885917094660675427 -28147679 -16062512 483876049 516657482726369446 -429018489 295071279 131635136 176429380546917807 227945873 812402553 -271742271 840365646909653826 -834426713 586084304 -547529179 9...
output:
-1664569700711813373 -1053333531588024159 -1000491242308628672 -1733677560351050737 -1609398765293517656 -1328984616378576478 -1129160009603686487 -1588136817928450256 -1060123157746468129 -1738321946600932313 -1778468400542602960 -1436283563532364758 -1569612247881992970 -1086963267195631293 -13664...
result:
ok 99748 lines
Test #4:
score: 0
Accepted
time: 505ms
memory: 125260kb
input:
200000 200000 -317847977 525536138 -997971963 128013476466794548 -548036883 337160985 -145974075 -195700861334636300 -724867754 -641003610 -760696431 -359739374654262877 -601681719 -64013647 216235416 -9458860324088657 -869002669 -536458711 -879969477 -267325832619409885 -887381150 -769771700 -32115...
output:
-1791119671831542466 -1562381666739252256 -1454944338598593191 -1100019661714702943 -1358372216736681172 -1196772147857670480 -1031894514403881624 -1446980382657653744 -1184499370667032484 -1123815059406541220 -1444259966996486892 -1076651931585643352 -1429556580885548952 -1910634429451024811 -12333...
result:
ok 100148 lines
Test #5:
score: 0
Accepted
time: 367ms
memory: 91520kb
input:
127669 148779 -471243687 508625098 391807640 -342283806983648705 -340210383 47829053 -391880620 240209487116192693 -274545508 770445695 616772252 -144712167052367176 -880188114 -308896220 -693352586 -29355468444432145 381012675 658211153 -277370657 -223335522481190637 -695379495 -366915786 916546493...
output:
-1116303818668273275 -1122282748919053950 -1833076145009619469 -1735834163503511299 -1154226917746696725 -1201176061522101225 -1419810711107983900 -1001069231171665854 -1865049592010438359 -1784695455689716511 -1902466130932019738 -1644603386432638268 -1213091162572113800 -1640076278676242796 -14316...
result:
ok 74399 lines
Test #6:
score: 0
Accepted
time: 408ms
memory: 99648kb
input:
150763 148757 -16062512 483876049 742203046 65718231886186737 -114582987 468042711 -913913563 484150211974036615 -448333502 614182218 6577596 -769509849750146393 -710428914 -12354532 497635710 -832906464305757785 -535251031 179614260 -876417353 -806315550178417183 273278837 819733107 -16863556 -7702...
output:
-1134246418002297778 -1465564391209986828 -1088160987472810573 -1570526469596326480 -1599782607445546091 -1391396854062745537 -1094227098401654868 -1732581002225039158 -1419213672956631064 -1945542854966153034 -1606933085452044102 -1304099061249812329 -1905766620229885408 -1578925235477621434 -16365...
result:
ok 74372 lines
Test #7:
score: 0
Accepted
time: 193ms
memory: 57128kb
input:
53336 120203 -997971963 362716733 185423412 -591863682353019904 -548036883 337160985 -145974075 -195700861334636300 -724867754 -641003610 -760696431 -359739374654262877 -601681719 -64013647 216235416 -9458860324088657 -869002669 -536458711 -879969477 -267325832619409885 -887381150 -769771700 -321150...
output:
-1345717484828710015 -1726377225131443611 -1277221842319302387 -1007424626087587316 -1071450544923448652 -1817571882869709507 -1343270791876712432 -1185495743769574829 -1602645704311705269 -1894895849331568810 -1200016566648933802 -1737725631579439522 -1882471460149418657 -1648128295693233892 -17306...
result:
ok 60105 lines
Test #8:
score: 0
Accepted
time: 0ms
memory: 5680kb
input:
11 1 -735559617 -340210383 47829053 240209487116192693 -274545508 770445695 616772252 -144712167052367176 -880188114 -308896220 -693352586 -29355468444432145 381012675 658211153 -277370657 -223335522481190637 -695379495 -366915786 916546493 655754885105439646 -992781513 -138210814 218118434 -3668951...
output:
result:
ok 0 lines
Test #9:
score: 0
Accepted
time: 1ms
memory: 5784kb
input:
6 11 -863012076 114022823 -561484685 -657406391247853790 -765835546 202841757 -28147679 -46121383578455600 483876049 742203046 648085233 -186557943001226187 -429018489 295071279 131635136 176429380546917807 227945873 812402553 -271742271 840365646909653826 -834426713 586084304 -547529179 97833598029...
output:
-637969271526783450 205210645209839855 -51177108112758140 754353035458004034 212402477421334639 -841298371968942545 -911432331322952525 204584401844401007 203868492836643311 -679313538246707630
result:
ok 10 lines
Extra Test:
score: 0
Extra Test Passed