QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#536453#2022. United Cows of Farmer JohnDimash#100 ✓218ms29548kbC++232.0kb2024-08-29 13:08:432024-08-29 13:08:44

Judging History

This is the latest submission verdict.

  • [2024-08-29 13:08:44]
  • Judged
  • Verdict: 100
  • Time: 218ms
  • Memory: 29548kb
  • [2024-08-29 13:08:43]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;
    
typedef long long ll;
const int  N = 1e6 + 12, MOD = 998244353;

int n, a[N], lst[N], prv[N];
ll t[N * 4], k[N * 4], add[N * 4];
void merge(int v) {
    t[v] = t[v + v] + t[v + v + 1];
    k[v] = k[v + v] + k[v + v + 1];
}

void inc(int v,int val) {
    t[v] += val * 1ll * k[v];
    add[v] += val;
}
void push(int v) {
    if(add[v]) {
        inc(v + v, add[v]);
        inc(v + v + 1, add[v]);
        add[v] = 0;
    }
}
void upd1(int pos,int val,int v = 1,int tl = 1,int tr = n) {
    if(tl == tr) {
        k[v] = val;
        t[v] = k[v] * t[v];
    } else {
        push(v);
        int tm = (tl + tr) >> 1;
        if(pos <= tm) upd1(pos,val,v+v,tl,tm);
        else upd1(pos,val,v+v+1,tm+1,tr);
        merge(v);
    }
}
void upd(int l,int r,int val,int v = 1,int tl = 1,int tr = n) {
    if(l > r || tl > r || l > tr) return;
    if(tl >= l && tr <= r) {
        inc(v,val); 
    } else {
        push(v);
        int tm = (tl + tr) >> 1;
        upd(l, r, val, v + v, tl, tm);
        upd(l, r, val, v + v + 1, tm + 1, tr);
        merge(v);
    }
}
ll get(int l,int r,int v = 1,int tl = 1,int tr = n) {
    if(l > r || tl > r || l > tr) return 0;
    if(tl >= l && tr <= r) {
        return t[v];
    } 
    push(v);
    int tm = (tl + tr) >> 1;
    return get(l, r, v + v, tl, tm) + get(l, r, v + v + 1, tm + 1, tr);
}
void test() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        prv[i] = lst[a[i]];
        lst[a[i]] = i;
    }
    ll res = 0;
    for(int i = 1; i <= n; i++) {
        int j = prv[i];
        if(j) {
            upd(prv[j] + 1,j - 1,-1);
            upd1(j,0);
        }
        res += get(j + 1,i - 1);
        upd1(i,1);
        upd(j + 1,i - 1,1);
    }
    cout << res << '\n';
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); 

    int t = 1; 
    // cin >> t;
    while(t--) 
        test();

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 5
Accepted
time: 2ms
memory: 9832kb

input:

7
1 2 3 4 3 2 5

output:

9

result:

ok single line: '9'

Test #2:

score: 5
Accepted
time: 1ms
memory: 9696kb

input:

50
2 12 4 5 5 8 1 10 10 10 12 1 12 1 9 1 6 10 1 3 12 7 4 8 11 1 5 2 1 5 8 3 10 9 4 7 11 2 5 10 3 5 5 1 11 10 5 10 11 12

output:

672

result:

ok single line: '672'

Test #3:

score: 5
Accepted
time: 0ms
memory: 9876kb

input:

500
100 1 57 5 1 46 3 45 40 120 1 113 89 2 24 2 31 112 3 3 2 3 3 43 3 1 1 3 66 77 1 2 3 1 2 1 103 3 58 2 47 3 3 47 1 103 71 75 31 125 3 72 21 1 45 98 1 3 29 1 2 104 69 14 1 21 94 60 1 1 2 13 3 71 60 3 3 66 3 18 19 3 103 2 1 1 1 2 3 102 116 1 2 54 1 77 2 88 2 74 3 119 3 3 115 119 3 1 3 1 52 74 33 3 1...

output:

366445

result:

ok single line: '366445'

Test #4:

score: 5
Accepted
time: 2ms
memory: 9808kb

input:

500
88 104 19 121 14 103 9 15 63 21 89 114 99 20 99 44 125 97 54 43 7 66 69 115 39 50 99 110 13 105 116 1 9 85 69 1 79 79 125 50 103 109 107 13 121 95 57 43 1 34 72 18 70 105 28 61 72 25 1 91 106 24 99 81 57 32 92 88 8 94 4 107 52 118 121 1 7 92 116 59 25 64 27 40 115 48 95 93 104 1 68 100 40 123 10...

output:

629805

result:

ok single line: '629805'

Test #5:

score: 5
Accepted
time: 5ms
memory: 12096kb

input:

5000
2 3 1246 1048 2 1130 89 1139 907 1 3 463 896 1205 468 1 2 2 456 1 620 466 679 1 815 590 538 87 2 2 3 1205 1151 886 951 1 904 2 288 1 3 193 345 600 679 1184 3 458 2 1 780 2 3 156 1011 1173 658 692 2 198 2 2 2 97 3 1 2 1 1 2 840 1213 653 232 1 895 767 1 1 1 1 3 2 1 887 655 763 1030 1 1161 1145 2 ...

output:

443343704

result:

ok single line: '443343704'

Test #6:

score: 5
Accepted
time: 5ms
memory: 12052kb

input:

5000
1231 895 977 653 1002 140 1230 239 244 312 278 68 1112 125 327 311 750 1010 440 477 476 827 774 136 71 1214 518 1148 732 748 281 1059 1217 1021 208 110 913 629 980 918 700 681 1141 1110 115 659 619 736 239 1041 268 1155 351 545 784 644 71 634 704 607 1124 523 151 566 29 324 1021 1144 453 942 36...

output:

726103269

result:

ok single line: '726103269'

Test #7:

score: 5
Accepted
time: 0ms
memory: 9968kb

input:

5000
2 2 3 238 1 3 2 2 2 856 1190 1 3 3 844 705 2 2 1 3 1 2 1 1 3 1 1217 762 1194 74 1075 1112 137 696 261 885 1 3 789 206 1 561 2 934 208 899 590 1 2 2 1 3 3 2 3 1 1 3 1 85 1090 2 97 3 459 1 423 2 3 2 977 947 2 2 717 2 3 214 1072 1 719 858 150 3 127 41 3 1007 840 861 706 3 2 2 3 560 3 972 2 1 2 2 1...

output:

420372826

result:

ok single line: '420372826'

Test #8:

score: 5
Accepted
time: 0ms
memory: 12020kb

input:

5000
156 326 63 29 754 200 230 1243 869 480 910 185 335 508 656 320 831 654 62 857 551 394 824 162 595 523 424 776 1218 1236 403 898 440 901 1213 804 1079 782 868 584 28 696 792 190 279 873 709 179 540 626 1076 503 865 1045 876 924 998 870 104 304 927 576 139 1225 786 669 1009 468 900 85 128 407 890...

output:

746468317

result:

ok single line: '746468317'

Test #9:

score: 5
Accepted
time: 174ms
memory: 23328kb

input:

200000
3 2 1 3 45832 3 46360 2 43883 32092 6025 31316 3 3 1 48003 8780 43454 44555 3 3 3 3 1 2 49599 1 2 9 1 48082 38706 29136 44444 3 1 20905 28835 3 38116 3 1 49383 1 3 16069 3 32602 1 1 585 10836 45904 37033 2 3373 1 18181 3 2 2 3 35512 4569 1 3 7497 41606 1 2 5391 6721 1 2 32911 2 3 38655 3 5480...

output:

27886742749196

result:

ok single line: '27886742749196'

Test #10:

score: 5
Accepted
time: 213ms
memory: 23404kb

input:

200000
8259 12570 32782 30500 12766 40026 19507 49878 16447 25468 44044 4676 10525 26024 14145 42973 38310 19188 32821 26402 20999 34303 39495 24026 18314 9835 10677 9417 35953 29735 6671 49 10952 12551 15402 1372 3617 26903 924 28361 15957 29833 944 44313 7393 766 27698 26211 2754 30661 7022 37258 ...

output:

46677239637626

result:

ok single line: '46677239637626'

Test #11:

score: 5
Accepted
time: 173ms
memory: 23384kb

input:

200000
3 41798 9553 1 48038 1 48717 2 2247 34817 37852 3 1 5429 3 2 38018 48912 22634 2 3 2 4487 1 45601 2 3 2 22286 35980 10484 3 30498 35966 2 14414 3 9094 1 9749 3 3 2 25826 44260 3 2685 42382 42503 2 22339 6302 2 3 43403 1 37715 35190 3 17426 33019 22003 26384 16164 11270 21353 10392 3 3 3 6022 ...

output:

27801413164053

result:

ok single line: '27801413164053'

Test #12:

score: 5
Accepted
time: 218ms
memory: 29460kb

input:

200000
14958 41948 11323 37 17428 21994 8558 18507 46344 38410 8643 47779 10780 1176 31750 4183 30595 16959 43374 36696 18979 17766 31816 8097 36856 17686 14379 5004 33050 31049 29551 7984 15824 46782 7345 18237 4180 33168 32527 12393 34248 11358 43779 37558 39709 22570 36541 39659 38198 23574 18156...

output:

46315259985057

result:

ok single line: '46315259985057'

Test #13:

score: 5
Accepted
time: 184ms
memory: 25364kb

input:

200000
8495 2 2 43243 1 1 17500 1 3 1 1 1 29393 40295 2 18129 12460 2 27798 1 21967 19889 23510 31386 46711 3 2 1 21986 17561 1 2 1 2 3 1 1 4335 3 3 3 1 702 44240 2 3 10083 6651 35299 2 2 38849 2 22343 1 1 3 49593 9115 2 40895 20179 3 30485 28026 2 44426 2 11660 3 39314 3 1 21771 1 3 30928 39231 134...

output:

27705281876883

result:

ok single line: '27705281876883'

Test #14:

score: 5
Accepted
time: 217ms
memory: 27348kb

input:

200000
41317 7509 41548 26335 47533 36548 31748 43508 36274 48872 43777 10146 15025 8393 36017 20568 9399 10563 9127 1026 30950 43864 49732 18491 14215 47199 20781 12214 15881 39074 10903 43005 35956 3952 7632 32684 9717 49518 48382 7467 33608 35995 41319 2206 49758 7336 49159 29201 386 47363 36367 ...

output:

46287877631836

result:

ok single line: '46287877631836'

Test #15:

score: 5
Accepted
time: 167ms
memory: 27416kb

input:

200000
25531 1 1 40584 5843 709 16877 38266 2104 14757 31702 2 3 33711 2 2 44825 1 2 12558 6427 32536 3 20092 2 1 1 43090 3 3 21650 2 3 48698 31197 4672 3 4290 3 2 23469 8873 2 482 2290 2 2 27228 3 22674 2 47827 31528 1726 3578 45285 2 22667 14224 1 1 8512 20019 16703 19443 36974 3 27579 1 13240 678...

output:

27884612153929

result:

ok single line: '27884612153929'

Test #16:

score: 5
Accepted
time: 209ms
memory: 23400kb

input:

200000
23292 10729 3106 27353 6243 41498 25157 42567 13256 1489 31717 47831 36584 48875 26209 19548 24863 29708 47201 27987 42327 49317 17693 31371 49023 43041 4345 5412 9734 14876 35589 49216 9419 2193 1393 8301 32367 7680 32203 29246 4614 27372 11396 49885 49083 5310 45662 7137 29928 44401 35987 2...

output:

46125295060015

result:

ok single line: '46125295060015'

Test #17:

score: 5
Accepted
time: 185ms
memory: 27412kb

input:

200000
4464 2 24013 16395 3 46971 1 2 15039 18673 34607 1 2 1 2 1 3 35513 3 2 3 10509 1 10857 1 1 40393 36139 26924 21144 2 18963 2 2 11001 3 18550 37979 12692 2 3 3 38739 2 25323 2 2 2 25502 1 34426 26490 3 1 2 47022 1 31445 1 21936 10861 1 1 1 3 1 30768 42085 37221 1 2 2 12555 40700 1 3 3 44414 46...

output:

27772954265147

result:

ok single line: '27772954265147'

Test #18:

score: 5
Accepted
time: 209ms
memory: 23320kb

input:

200000
13004 24590 22679 40915 35260 30100 41108 16800 16756 9598 5953 18207 30139 43616 33293 35349 33419 38841 18158 20237 49540 17350 18448 28256 6255 12668 44273 48540 31141 38741 15401 24504 30506 18691 22409 15856 37500 9074 56 22093 38954 32293 48339 40341 7450 40391 49650 49220 10941 42592 3...

output:

46095858110175

result:

ok single line: '46095858110175'

Test #19:

score: 5
Accepted
time: 173ms
memory: 25452kb

input:

200000
11954 3 25520 14755 27923 3 42995 2 1 2 32158 2 3 2 26005 2216 10061 47346 2 7096 33801 48975 27133 21869 39997 28340 1 30793 3 2 20337 3 9869 29085 2 3 39389 42611 2 36761 3 38054 24804 2 1 1 31425 1 1 34780 2 25168 14715 2 31122 47807 1 3 43939 3 3512 2 3 1 1 9662 3 12781 1 24979 2 36439 13...

output:

28114059040426

result:

ok single line: '28114059040426'

Test #20:

score: 5
Accepted
time: 215ms
memory: 29548kb

input:

200000
34383 25489 49459 6320 2809 2564 13997 19854 49389 34817 6950 46490 33510 8510 43625 43148 23233 31842 41925 21793 28393 5118 12585 24231 23272 23056 32148 36057 16158 11168 40131 36029 21191 16998 4270 38791 44089 37066 30893 49589 32358 46400 38666 28400 40798 49069 40361 39009 16741 36680 ...

output:

46073708078280

result:

ok single line: '46073708078280'