QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#734834#9701. CatSSAABBEERRAC ✓548ms3752kbC++201.4kb2024-11-11 15:23:192024-11-11 15:23:19

Judging History

This is the latest submission verdict.

  • [2024-11-11 15:23:19]
  • Judged
  • Verdict: AC
  • Time: 548ms
  • Memory: 3752kb
  • [2024-11-11 15:23:19]
  • Submitted

answer

#include<bits/stdc++.h>
#define lowbit(x) (x & (-x))
#define endl "\n"
// #define ll long long
#define int long long
#define fi first
#define se second
using namespace std;
#define pii pair<int, int>
#define rep(i, a, b) for(int i = a; i <= b; i ++ )
#define pre(i, a, b) for(int i = a; i >= b; i -- )
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
mt19937_64 rnd(time(0));
const int N = 1e6 + 10;
int n;
int g(int x)
{
    if(x % 4 == 3) return 0;
    else if(x % 4 == 2) return x + 1;
    else if(x % 4 == 1) return 1;
    else return x;
}
void solve()
{
    int l, r, s;
    cin >> l >> r >> s;
    if(r - l + 1 <= 100)
    {
        int ans = -1;
        rep(i, l, r)
        {
            rep(j, i, r)
            {
                if((g(j) ^ g(i - 1)) <= s) ans = max(ans, j - i + 1);
            }
        }
        cout << ans << endl;
    }
    else
    {
        int tl = l / 4;
        if(l % 4 != 0) tl ++ ;
        int tr = r / 4;
        tr -- ;
        int ans = -1;
        tl *= 4;
        tr *= 4;
        tr += 3;
        // cout<<r<<" "<<tr<<endl;
        rep(i, l, tl)
        {
            rep(j, tr, r)
            {
                if((g(j) ^ g(i - 1)) <= s) ans = max(ans, j - i + 1);
            }
        }
        cout << ans << endl;
    }
}
signed main()
{
   IOS;
    int _;
    _ = 1;
    cin >> _;
    while(_ -- )
    {
        solve();
    }
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 196ms
memory: 3668kb

input:

500000
28316250877914575 822981260158260522 1779547116602436425
335408917861648772 578223540024979445 74859962623690079
252509054433933447 760713016476190629 919845426262703496
522842184971407775 585335723211047202 148049062628894322
84324828731963982 354979173822804784 1001312150450968415
269587449...

output:

794665009280345948
242814622163330674
508203962042257183
62493538239639426
270654345090840803
376174809552329776
469882136957817192
42350729279043822
64865315101301174
697234070719324700
223517937810991678
108731400892235542
120906461794646288
463966315863716824
433607439314780607
450247658658833134...

result:

ok 500000 numbers

Test #2:

score: 0
Accepted
time: 547ms
memory: 3752kb

input:

500000
23 999999999999999996 27
576460752303423448 576460752303423490 576460752303423491
999999999999999936 999999999999999964 20
576460752303423534 576460752303423555 116
576460752303423486 576460752303423553 576460752303423547
576460752303423483 576460752303423496 576460752303423492
57646075230342...

output:

999999999999999973
43
28
22
68
13
4
38
576460752303423488
576460752303423533
12
73
999999999999999879
576460752303423451
22
43
576460752303423492
28
4
10
22
42
999999999999999920
576460752303423502
576460752303423451
36
12246659296139068
999999999999999878
999999999999999882
636067326669398785
57646...

result:

ok 500000 numbers

Test #3:

score: 0
Accepted
time: 546ms
memory: 3668kb

input:

500000
9 34 15
43 999999999999999986 45
46 576460752303423452 576460752303423454
67 576460752303423427 576460752303423425
576460752303423427 576460752303423436 4
13 576460752303423485 0
280939520439490979 303579375855633068 280939520439490985
57 576460752303423541 59
576460752303423418 5764607523034...

output:

25
999999999999999943
576460752303423407
576460752303423361
8
576460752303423472
22639855416142089
576460752303423485
16
999999999999999927
105
576460752303423356
576460752303423470
3
576460752303423421
576460752303423449
576460752303423425
69
100
18
352444936152834244
58
687849149627053501
66
57646...

result:

ok 500000 numbers

Test #4:

score: 0
Accepted
time: 548ms
memory: 3668kb

input:

500000
18 576460752303423429 576460752303423445
576460752303423501 576460752303423551 51
53 576460752303423545 1
43 576460752303423443 49
909705471529716396 909705471529716401 28
23 49 60
576460752303423468 576460752303423523 576460752303423472
594738223099041411 639698402648794444 14527168606043857...

output:

576460752303423412
50
576460752303423492
576460752303423401
6
27
56
44960179549753034
576460752303423497
999999999999999907
12
576460752303423465
999999999999999983
576460752303423383
576460752303423463
50
156210206167576160
999999999999999897
576460752303423437
105
90
576460752303423543
34
99999999...

result:

ok 500000 numbers