QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#488107 | #8597. Запити красот пiдмасивiв | PetroTarnavskyi# | 10 | 487ms | 31668kb | C++23 | 3.2kb | 2024-07-23 16:50:15 | 2024-07-23 16:50:16 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define RFOR(i, a, b) for(int i = (a) - 1; i >= (b); i--)
#define SZ(a) int(a.size())
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second
typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef double db;
const LL LINF = 1e18;
struct SegTree
{
vector<LL> lazy;
vector<PLL> t;
void init(int _n)
{
int n = 1;
while(n < _n)
n *= 2;
t.assign(2 * n, MP(0, -1));
lazy.assign(2 * n, 0);
}
void build(int v, int tl, int tr, const vector<LL>& vals)
{
if(tl + 1 == tr)
{
t[v] = MP(vals[tl], tl);
return;
}
int tm = (tl + tr) / 2;
build(2 * v + 1, tl, tm, vals);
build(2 * v + 2, tm, tr, vals);
t[v] = max(t[2 * v + 1], t[2 * v + 2]);
}
void push(int v, int tl, int tr)
{
t[v].F += lazy[v];
if(tl + 1 != tr)
{
lazy[2 * v + 1] += lazy[v];
lazy[2 * v + 2] += lazy[v];
}
lazy[v] = 0;
}
void upd(int v, int tl, int tr, int l, int r, int val)
{
push(v, tl, tr);
if(r <= tl || tr <= l)
return;
if(l <= tl && tr <= r)
{
lazy[v] += val;
push(v, tl, tr);
return;
}
int tm = (tl + tr) / 2;
upd(2 * v + 1, tl, tm, l, r, val);
upd(2 * v + 2, tm, tr, l, r, val);
t[v] = max(t[2 * v + 1], t[2 * v + 2]);
}
PLL query(int v, int tl, int tr, int l, int r)
{
push(v, tl, tr);
if(r <= tl || tr <= l)
return MP(-LINF, -1);
if(l <= tl && tr <= r)
return t[v];
int tm = (tl + tr) / 2;
return max(query(2 * v + 1, tl, tm, l, r),
query(2 * v + 2, tm, tr, l, r));
}
};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n, q;
cin >> n >> q;
VI a(n);
vector<LL> pref(n + 1), rpref(n + 1);
FOR(i, 0, n)
{
cin >> a[i];
pref[i + 1] = pref[i] + a[i];
rpref[i + 1] = -pref[i + 1];
}
SegTree Mx, Mn;
Mx.init(n + 1);
Mn.init(n + 1);
Mx.build(0, 0, n + 1, pref);
Mn.build(0, 0, n + 1, rpref);
while(q--)
{
int t, l, r;
cin >> t >> l >> r;
if(t == 1)
{
l--;
LL prefR = Mx.query(0, 0, n + 1, r, r + 1).F;
LL prefL = Mx.query(0, 0, n + 1, l, l + 1).F;
LL ans = abs(prefR - prefL);
int pos1 = Mx.query(0, 0, n + 1, l, r + 1).S;
LL prefPos1 = Mx.query(0, 0, n + 1, pos1, pos1 + 1).F;
LL cur1 = min(abs(prefPos1 - prefL), abs(prefR - prefPos1));
ans = max(ans, cur1);
LL pos2 = Mn.query(0, 0, n + 1, l, r + 1).S;
LL prefPos2 = Mx.query(0, 0, n + 1, pos2, pos2 + 1).F;
LL cur2 = min(abs(prefPos2 - prefL), abs(prefR - prefPos2));
ans = max(ans, cur2);
if(pos1 < pos2)
{
LL cur = min(min(prefPos1 - prefL, prefPos2 - prefPos1), prefR - prefPos2);
ans = max(ans, cur);
}
else
{
LL cur = min(min(prefPos2 - prefL, prefPos1 - prefPos2), prefR - prefPos1);
ans = max(ans, cur);
}
cout << ans << "\n";
}
else
{
int d = r - a[l - 1];
a[l - 1] = r;
Mx.upd(0, 0, n + 1, l, n + 1, d);
Mn.upd(0, 0, n + 1, l, n + 1, -d);
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Time Limit Exceeded
Test #1:
score: 0
Time Limit Exceeded
input:
1000000 1000000 548734664 631285694 511074814 185066089 177199147 524740185 143108778 954318193 103939390 194933972 126964310 977448144 188825490 775722231 460775045 254691982 436971964 566341931 148211711 74910105 923734998 440021758 474275150 717904448 680353276 612974499 712145218 300908726 34722...
output:
251801387395338 230985543990378 233364582761908 165509624203582 383254838720986 448483728625094 365779189638223 259921744673457 396032911262151 463175787332481 396490494773605 379294045009719 380905359946099 248640668979163 372751657582612 250611799614193 382671202614963 249747705028859 377678676465...
result:
Subtask #2:
score: 0
Wrong Answer
Test #7:
score: 0
Wrong Answer
time: 1ms
memory: 3664kb
input:
1000 1000 -873807720 -737050877 797489760 406646247 -750849890 -581119106 43724194 -931326234 -9389547 -684003608 -926307185 -502569356 -461635706 -238087464 -83909772 -884633970 46721429 -576741985 -323890970 -855342249 -736506813 336516318 -4075924 -782227362 56799828 290931118 -471600723 81594380...
output:
9772834244 7971661681 7251185652 5902581650 12301584130 9137214347 10770040139 9693548841 12636393268 9951777555 8590138425 9126178404 8438322412 10469973494 9585010202 12336530829 12305905331 12818655084 9576894451 9228532410 10060968297 12060843219 8619457836 8862797014 12336530829 6408306273 9621...
result:
wrong answer 44th numbers differ - expected: '5882777912', found: '4307081773'
Subtask #3:
score: 10
Accepted
Test #14:
score: 10
Accepted
time: 446ms
memory: 31544kb
input:
200000 200000 580139218 -783262026 565291185 -701435432 -591602198 -342573855 -900284959 -10919966 -682899137 -282058183 963121871 491072571 691886927 761414760 -828585515 888361166 -790814084 145385324 214735368 388759807 -80339362 -975535748 522135695 301673442 36714481 785639770 319723485 1098009...
output:
351460487491 210343422436 312498498649 203192986383 287815765786 245818714404 213968420688 159327542896 169009698075 212975612931 197610853645 255310400798 318802499824 292657635865 313528174745 321957839407 262317902055 187559666100 220264896012 221468083688 294234309666 310907237863 189575747002 1...
result:
ok 200000 numbers
Test #15:
score: 10
Accepted
time: 487ms
memory: 31648kb
input:
200000 200000 216963970 895963907 970921505 973720179 985811250 998640537 999103413 999661484 999729609 999942450 -821783874 781997309 829131735 832477333 892292610 985929024 998231319 999101470 999204347 999373872 473465706 768624229 994843197 999760281 999881158 999973657 999988928 999993358 99999...
output:
112621847444942 101030183697291 63233054628753 80384063266952 115039837711512 95578572948651 143407295417810 60640420205729 72326537106317 97513628293662 111552624754764 88836367993245 60834804129630 81553727338901 100409741576180 65344377179665 95711093922326 112060888712228 73442129454981 65507735...
result:
ok 200000 numbers
Test #16:
score: 10
Accepted
time: 459ms
memory: 31668kb
input:
200000 200000 -824647563 -226311394 73090714 76436719 759867982 803623373 829644660 946127786 957102501 987106779 997539215 999943331 999979160 999991880 999996009 999997678 999999024 999999063 999999274 999999406 999999496 999999684 999999952 999999985 999999992 999999993 999999996 999999998 999999...
output:
107254718306887 59985268718865 160651387958961 113576472431692 94922328063875 159793953406254 103324138822766 134824989111115 123862745746950 169491678824442 91501549032165 99093005632887 139347712481764 122330217459374 84161090195491 89777898364239 162149696406419 120396086999264 88322334520469 615...
result:
ok 200000 numbers
Test #17:
score: 10
Accepted
time: 455ms
memory: 31512kb
input:
200000 200000 -282183530 -94945479 227825325 604182067 992536174 995235520 999623224 999831612 999944208 999969121 999974356 999980957 999988940 999994107 999995968 999998154 999999531 999999584 999999922 999999935 999999969 999999985 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000...
output:
123377619867900 100211431195321 145963538594998 190203444064019 64843966674700 77549625539887 184560557631975 39023969105634 110224991478919 60057393127515 82953877723644 86412104386226 160532783809484 121422800259115 193867540418057 93054646076494 162102767313085 35476495087574 102656767657861 8893...
result:
ok 200000 numbers
Test #18:
score: 10
Accepted
time: 446ms
memory: 31668kb
input:
200000 200000 895486773 904267709 971843319 989242035 997432691 998747539 999923993 999958496 999981782 999997130 999998160 999999003 999999967 999999992 999999996 999999997 999999999 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 100000...
output:
107947399476523 162249388524327 188244246063420 149188588881854 157732011675993 143224891836264 133208454676491 163999809906499 141125758850610 129080307951204 119938099343301 102187458820136 42426020657946 113901944910560 54823208026881 147838531324875 119767412026628 157136338370764 34461988892014...
result:
ok 200000 numbers
Test #19:
score: 10
Accepted
time: 447ms
memory: 31548kb
input:
200000 200000 15691546 982710368 991752623 996635863 999985515 999992516 999995094 999999596 999999991 999999999 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 ...
output:
72523839838926 125348292306559 156051487951881 110134134212103 157069281441772 82917291584024 119805834008914 161199487951881 118949623834329 129858684120921 104031770661480 135286708593556 136516858580023 60306452467633 70864365507686 134657502564275 83413848621308 164520131445345 125642684120921 1...
result:
ok 200000 numbers
Test #20:
score: 10
Accepted
time: 456ms
memory: 31528kb
input:
200000 200000 -90259554 929646040 932381231 965326126 992162797 999519149 999868148 999979048 999996345 999998606 999999942 999999998 999999998 999999999 999999999 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000...
output:
165849002394680 130735002394680 156026002394680 127391002394680 107616002394680 119917002394680 68572000000000 125579002394680 168319002394680 145634002394680 124946002394680 120901002394680 151983002394680 118365002394680 134173002394680 77681002394680 117765002394680 126867002394680 12318900239468...
result:
ok 200000 numbers
Subtask #4:
score: 0
Wrong Answer
Test #21:
score: 0
Wrong Answer
time: 240ms
memory: 31536kb
input:
200000 200000 128744308 920701830 -482412021 59142239 721167306 -622861403 165749748 -449445968 -760679479 -207234657 171482190 -239316743 75518499 -717652242 502074875 -731242646 -183939818 -625333917 -53052313 185734819 -780000096 -563390882 -690210905 596581513 764466021 776717157 -38544163 -7898...
output:
128744308 1049446138 567034117 626176356 1347343662 724482259 890232007 906557623 1347343662 1347343662 1347343662 1347343662 1347343662 1347343662 1347343662 1466264164 1650203982 2275537899 2328590212 2142855393 2922855489 3486246371 4176457276 3579875763 2815409742 2137764691 2099220528 286704480...
result:
wrong answer 71st numbers differ - expected: '3002133635', found: '2435794510'
Subtask #5:
score: 0
Wrong Answer
Test #28:
score: 0
Wrong Answer
time: 467ms
memory: 31668kb
input:
200000 200000 3 -5 -3 3 3 -5 7 -2 2 -4 -4 9 0 -4 -2 2 -5 7 -2 3 -8 1 6 -7 9 -3 -2 4 -2 -2 3 -2 1 0 -3 6 0 -6 -2 6 -5 6 -4 3 2 -4 5 -2 -8 1 1 2 1 -3 3 5 -9 1 3 -2 0 1 -2 1 2 5 -1 -4 -1 -3 7 -7 7 1 -6 7 -1 -5 1 4 -7 6 -3 -4 -1 4 1 5 -7 -3 9 1 -6 2 -3 1 6 -1 -1 1 -1 -5 -3 9 -5 4 -1 3 -2 -4 -4 8 1 0 -9 ...
output:
9 7 8 6 8 4 5 7 9 9 5 9 6 6 9 4 8 9 8 5 6 6 5 7 6 4 5 7 8 5 6 7 5 5 7 7 5 9 7 5 9 5 8 10 5 7 6 8 5 5 6 7 7 6 6 8 4 6 9 4 6 5 6 5 8 6 6 5 5 9 8 5 7 6 4 5 6 6 5 7 4 5 4 4 6 7 9 9 8 9 7 6 5 9 9 7 8 5 9 4 7 8 9 7 8 9 8 8 5 6 8 8 4 6 5 6 6 5 9 6 6 8 9 5 8 6 5 5 7 5 10 7 5 5 6 8 6 8 6 5 6 8 6 5 10 8 7 6 6...
result:
wrong answer 4th numbers differ - expected: '7', found: '6'
Subtask #6:
score: 0
Skipped
Dependency #1:
0%
Subtask #7:
score: 0
Skipped
Dependency #6:
0%
Subtask #8:
score: 0
Skipped
Dependency #6:
0%
Subtask #9:
score: 0
Skipped
Dependency #1:
0%