ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#203784 | #151. Boom | tkswls | 100 | 8348ms | 127720kb | C++11 | 2.8kb | 2024-03-19 09:29:50 | 2024-03-19 12:32:24 |
answer
#include <bits/stdc++.h>
#pragma GCC optimize(2)
#define ll long long
#define i128 __int128
using namespace std;
int n, m, t, l[100005], a[100005], r[100005], b[350][100005], op, name[100005], gl[350], gr[350];
ll suml[100005], sumr[100005], ssum[350];
i128 sum[350], ans;
inline ll gets(int p, int q) {
ll cnt = 0;
if (name[p] == name[q]) {
cnt = sumr[p];
if (q != gr[name[p]]) {
cnt -= sumr[q + 1];
}
return cnt;
}
if (name[p] == name[q] - 1) {
return sumr[p] + suml[q];
}
return sumr[p] + suml[q] + ssum[name[q] - 1] - ssum[name[p]];
}
template<typename type>
inline void read(type &x) {
x = 0;
bool flag(0);
char ch = getchar();
while (!isdigit(ch)) flag = ch == '-', ch = getchar();
while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
flag ? x = -x : 0;
}
template<typename type>
inline void write(type x, bool mode = 1) {
x < 0 ? x = -x, putchar('-') : 0;
static short Stack[50], top(0);
do Stack[++top] = x % 10, x /= 10;
while (x);
while (top) putchar(Stack[top--] | 48);
mode ? putchar('\n') : putchar(' ');
}
signed main() {
read(n);
t = min(n, (int)sqrt(n) + 1);
for (int i = 1; i <= n; i++) {
read(a[i]);
name[i] = (i - 1) / t + 1;
ssum[name[i]] += a[i];
}
op = name[n];
for (int i = 1; i <= op; i++) {
ssum[i] += ssum[i - 1];
gl[i] = (i - 1) * t + 1, gr[i] = min(n, i * t);
}
for (int i = 1; i <= op; i++) {
for (int j = gl[i]; j <= gr[i]; j++) {
if (j == gl[i]) {
suml[j] = a[j];
} else {
suml[j] = suml[j - 1] + a[j];
}
}
for (int j = gr[i]; j >= gl[i]; j--) {
if (j == gr[i]) {
sumr[j] = a[j];
} else {
sumr[j] = sumr[j + 1] + a[j];
}
}
}
for (int i = 1; i <= n; i++) {
read(l[i]), read(r[i]);
b[name[i]][l[i]]++;
b[name[i]][r[i] + 1]--;
sum[name[i]] += gets(l[i], r[i]);
}
for (int i = 1; i <= op; i++) {
for (int j = 1; j <= n; j++) {
b[i][j] += b[i][j - 1];
}
}
int qwe, p, q, w;
read(m);
for (int i = 1; i <= m; i++) {
read(qwe), read(p), read(q);
if (qwe == 1) {
w = q - a[p];
a[p] = q;
for (int j = name[p]; j <= op; j++) {
ssum[j] += w;
}
for (int j = p; j <= gr[name[p]]; j++) {
suml[j] += w;
}
for (int j = gl[name[p]]; j <= p; j++) {
sumr[j] += w;
}
for (int j = 1; j <= op; j++) {
sum[j] += 1ll * b[j][p] * w;
}
} else {
ans = 0;
if (name[p] == name[q]) {
for (int i = p; i <= q; i++) {
ans += gets(l[i], r[i]);
}
} else {
for (int i = name[p] + 1; i < name[q]; i++) {
ans += sum[i];
}
for (int i = p; i <= gr[name[p]]; i++) {
ans += gets(l[i], r[i]);
}
for (int i = q; i >= gl[name[q]]; i--) {
ans += gets(l[i], r[i]);
}
}
write(ans, 1);
}
}
}
Details
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 15
Accepted
Test #1:
score: 15
Accepted
time: 0ms
memory: 1436kb
input:
978 622650072 984943658 144108929 470211272 101027544 457850877 458777922 7237707 823564440 11543816...
output:
40338284513108 71903057781631 95881406749369 32494373280638 25239917056405 77776995079159 8929433735...
result:
ok 476 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 1432kb
input:
955 97816498 969887315 140734213 940422544 202055088 768218109 770072199 866991770 647128879 8339268...
output:
5909582694825 72933138303449 60946016518588 18602770751803 28953229400158 114537104644919 2428148244...
result:
ok 507 numbers
Test #3:
score: 0
Accepted
time: 1ms
memory: 1440kb
input:
983 572982925 807347327 284843142 410633815 303082632 78585340 81366475 726745832 323209673 19883084...
output:
64619788231040 34771316231255 7690174058410 7682293272021 37970268503162 85254621035534 608512714031...
result:
ok 478 numbers
Test #4:
score: 0
Accepted
time: 1ms
memory: 1432kb
input:
960 48149351 792290984 281468426 880845087 404110176 536436217 540144397 586499894 146774112 1667853...
output:
41114344825882 60311968398660 48132881762704 45714920538102 44141876670961 50501010805882 6830661712...
result:
ok 501 numbers
Test #5:
score: 0
Accepted
time: 1ms
memory: 1440kb
input:
988 670799423 629750996 425577355 203572713 505137720 846803449 851438674 446253956 970338552 282223...
output:
46641372787008 27868811408764 117580914181633 4604662320095 78452294512583 29900119929875 2600471168...
result:
ok 489 numbers
Test #6:
score: 0
Accepted
time: 1ms
memory: 1432kb
input:
965 145965849 614694653 422202639 673783985 606165264 157170680 162732950 306008018 646419346 250178...
output:
66113933859392 3885495157880 96944338904036 37862676947951 101176127728590 1653331975884 89002493077...
result:
ok 509 numbers
Subtask #2:
score: 20
Accepted
Test #7:
score: 20
Accepted
time: 55ms
memory: 1448kb
input:
994 621132276 452154665 566311568 143995256 707192808 615021557 621510872 165762080 469983785 365616...
output:
14488483010421 52216943545338 44902719329254 71948990048635 31471596968232 91774250925604 1040746449...
result:
ok 49646 numbers
Test #8:
score: 0
Accepted
time: 58ms
memory: 1448kb
input:
993 96298702 437098322 562936852 614206528 808220352 925388789 932805149 25516142 146064579 33357073...
output:
38789683270103 100927706933150 28255521490049 135070703465875 97933651510985 32282617092619 33488356...
result:
ok 49706 numbers
Test #9:
score: 0
Accepted
time: 54ms
memory: 1444kb
input:
992 718948774 274558334 707045781 84417799 909247896 235756020 244099425 885270205 969629019 4490088...
output:
65926504124246 79783617548920 29410434876213 32226392369641 127025770829730 24560356287715 126516007...
result:
ok 49740 numbers
Test #10:
score: 0
Accepted
time: 57ms
memory: 1444kb
input:
991 194115200 259501991 703671065 407145426 10275439 693606897 702877347 745024267 793193458 4169634...
output:
77752074525804 18031437178974 24962076014026 40877380107636 53160817644438 52125618046811 2776383476...
result:
ok 49613 numbers
Test #11:
score: 0
Accepted
time: 54ms
memory: 1440kb
input:
990 669281627 96962003 847779994 877356698 111302983 3974128 14171623 604778329 469274252 532401579 ...
output:
54458260605737 62909135615977 50571637605894 68862983739597 139380547749282 34772707655098 174397795...
result:
ok 49684 numbers
Subtask #3:
score: 25
Accepted
Test #12:
score: 25
Accepted
time: 902ms
memory: 127324kb
input:
99483 144448053 81905660 844405278 347567969 212330527 314341360 325465900 464532391 292838691 50035...
output:
118744287784850 183508017270541 22139784574143 141473390682466 53977255634599 69641783321153 7120235...
result:
ok 49390 numbers
Test #13:
score: 0
Accepted
time: 823ms
memory: 127324kb
input:
99273 767098125 66849317 988514207 817779241 313358071 772192237 784243822 324286453 116403130 61579...
output:
145833220844811 56006472614354 173564755567788 134897751427864 129013170266099 17564404128072 174735...
result:
ok 49543 numbers
Test #14:
score: 0
Accepted
time: 871ms
memory: 127316kb
input:
99063 242264551 904309330 985139491 140506867 414385615 82559468 95538098 184040515 792483925 583748...
output:
166372909770134 93195362605507 60589093352508 28033336280698 5232209553940 16457726688219 1219092961...
result:
ok 49763 numbers
Test #15:
score: 0
Accepted
time: 826ms
memory: 127720kb
input:
99854 717430978 889252987 129248419 610718139 515413159 392926700 406832375 43794577 616048364 69918...
output:
88247118114710 1375456264603 23618825687309 160426399524338 58385291737771 56691625101160 4516730811...
result:
ok 49923 numbers
Subtask #4:
score: 40
Accepted
Test #16:
score: 40
Accepted
time: 919ms
memory: 127720kb
input:
99644 192597404 726712999 125873703 80929410 616440703 850777577 865610297 51032284 292129158 667141...
output:
480304783882461775 120192859749203484 905523823754698704 16041383460252000 398851626409541632 923674...
result:
ok 49845 numbers
Test #17:
score: 0
Accepted
time: 899ms
memory: 127324kb
input:
99434 815247476 711656656 122498987 551140682 717468247 161144808 176904573 910786347 115693597 7825...
output:
555316709210731726 254633360850421614 1244760050994749402 670079521158507466 309587351225767348 9575...
result:
ok 49699 numbers
Test #18:
score: 0
Accepted
time: 926ms
memory: 127320kb
input:
99224 290413902 549116668 266607916 21351953 818495791 471512040 488198850 770540409 939258037 75053...
output:
970652707558266443 110388969890056720 972694557242680624 260207513526844630 968241720148561517 18853...
result:
ok 49994 numbers
Test #19:
score: 0
Accepted
time: 935ms
memory: 127320kb
input:
99014 765580329 534060325 263233200 344079580 919523335 929362917 946976772 630294471 615338831 8659...
output:
859798349348274160 264084430712406078 889462584998072945 155686554166711840 151314159586743758 88511...
result:
ok 49709 numbers
Test #20:
score: 0
Accepted
time: 965ms
memory: 127716kb
input:
99805 240746755 371520337 407342129 814290852 20550878 239730148 258271048 490048533 438903270 83392...
output:
913556633961091398 862687977070717615 801175214174815058 522770071025650989 271212620675663199 74164...
result:
ok 49829 numbers
Extra Test:
score: 0
Extra Test Passed