QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#507257#5259. Skills in Pillsucup-team1525#AC ✓36ms27388kbC++172.5kb2024-08-06 14:43:302024-08-06 14:43:30

Judging History

This is the latest submission verdict.

  • [2024-08-06 14:43:30]
  • Judged
  • Verdict: AC
  • Time: 36ms
  • Memory: 27388kb
  • [2024-08-06 14:43:30]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
const int inf=1<<30;
int n,a,b;
struct F{
    int c,x;
    F(int c=0,int x=0):c(c),x(x){}
    bool operator <= (const F t) const{
        return c==t.c?x>=t.x:c<t.c;
    }
}f[N+5][2];
int q[2][N+5],ql[2],qr[2];
F mn(F x,F y){ return x<=y?x:y; }
int main(){
    scanf("%d %d %d",&a,&b,&n);
    f[0][0]=f[0][1]=F();
    for(int i=0;i<2;i++){
        q[i][++ql[i]]=0;
        qr[i]=1;
    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<2;j++){
            f[i][j]=F(inf,0);
            int aa=a,bb=b;
            if(j) swap(aa,bb);
            while(ql[j]<=qr[j]){
                int p=q[j][ql[j]];
                if(p<=i-aa||f[p][j].x<i-bb) ql[j]++;
                else break;
            }
        }
        for(int j=0;j<2;j++){
            int k=j^1,aa=j?b:a;
            if(ql[k]<=qr[k]){
                int l=ql[k],r=qr[k];
                int pl=q[k][l];
                while(l<=r){
                    int mid=l+r>>1;
                    int p=q[k][mid];
                    if(f[p][k].c==f[pl][k].c&&f[p][k].x>=i-aa) l=mid+1;
                    else r=mid-1;
                }
                int p=q[k][r];
                f[i][j]=mn(f[i][j],F(f[p][k].c+1,p));
            }
        }
        for(int j=0;j<2;j++){
            int aa=a,bb=b;
            if(j) swap(aa,bb);
            while(ql[j]<=qr[j]){
                int p=q[j][ql[j]];
                if(p<=i-aa||f[p][j].x<=i-bb) ql[j]++;
                else break;
            }
        }
        for(int j=0;j<2;j++){
            int k=j;
            if(ql[k]<=qr[k]){
                int p=q[k][ql[k]];
                // printf("%d %d\n",i,p);
                f[i][j]=mn(f[i][j],F(f[p][k].c+1,f[p][k].x));
            }
        }
        if(i>=a&&f[i-a][0].x>i-b)
            f[i][0]=mn(f[i][0],F(f[i-a][0].c+1,f[i-a][0].x));
        if(i>=b&&f[i-b][1].x>i-a)
            f[i][1]=mn(f[i][1],F(f[i-b][1].c+1,f[i-b][1].x));
        for(int j=0;j<2;j++){
            while(ql[j]<=qr[j]){
                int p=q[j][qr[j]];
                if(f[i][j]<=f[p][j]) qr[j]--;
                else break;
            }
            q[j][++qr[j]]=i;
            // printf("%d %d\n",ql[j],qr[j]);
        }
        // printf("0 %d %d\n",f[i][0].c,f[i][0].x);
        // printf("1 %d %d\n",f[i][1].c,f[i][1].x);
    }
    int p0=q[0][ql[0]],p1=q[1][ql[1]];
    printf("%d\n",min(f[p0][0].c,f[p1][1].c));
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 21784kb

input:

3 9 20

output:

8

result:

ok single line: '8'

Test #2:

score: 0
Accepted
time: 0ms
memory: 23416kb

input:

8 2 12

output:

7

result:

ok single line: '7'

Test #3:

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

input:

2 5 15

output:

10

result:

ok single line: '10'

Test #4:

score: 0
Accepted
time: 0ms
memory: 21640kb

input:

10 8 13

output:

2

result:

ok single line: '2'

Test #5:

score: 0
Accepted
time: 2ms
memory: 22376kb

input:

6 6 19

output:

6

result:

ok single line: '6'

Test #6:

score: 0
Accepted
time: 4ms
memory: 22812kb

input:

2 3 5

output:

3

result:

ok single line: '3'

Test #7:

score: 0
Accepted
time: 3ms
memory: 22568kb

input:

4 2 8

output:

6

result:

ok single line: '6'

Test #8:

score: 0
Accepted
time: 0ms
memory: 23136kb

input:

5 5 5

output:

2

result:

ok single line: '2'

Test #9:

score: 0
Accepted
time: 0ms
memory: 22688kb

input:

3 8 11

output:

4

result:

ok single line: '4'

Test #10:

score: 0
Accepted
time: 3ms
memory: 21796kb

input:

5 8 16

output:

5

result:

ok single line: '5'

Test #11:

score: 0
Accepted
time: 0ms
memory: 23288kb

input:

9 7 279

output:

70

result:

ok single line: '70'

Test #12:

score: 0
Accepted
time: 0ms
memory: 21652kb

input:

8 3 56

output:

25

result:

ok single line: '25'

Test #13:

score: 0
Accepted
time: 4ms
memory: 23604kb

input:

5 9 46

output:

14

result:

ok single line: '14'

Test #14:

score: 0
Accepted
time: 0ms
memory: 21892kb

input:

8 4 251

output:

93

result:

ok single line: '93'

Test #15:

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

input:

8 7 41

output:

10

result:

ok single line: '10'

Test #16:

score: 0
Accepted
time: 0ms
memory: 22580kb

input:

60 17 360

output:

27

result:

ok single line: '27'

Test #17:

score: 0
Accepted
time: 0ms
memory: 23044kb

input:

16 55 388

output:

31

result:

ok single line: '31'

Test #18:

score: 0
Accepted
time: 0ms
memory: 23360kb

input:

25 38 292

output:

18

result:

ok single line: '18'

Test #19:

score: 0
Accepted
time: 4ms
memory: 23580kb

input:

22 59 177

output:

11

result:

ok single line: '11'

Test #20:

score: 0
Accepted
time: 0ms
memory: 22136kb

input:

4 3 82

output:

50

result:

ok single line: '50'

Test #21:

score: 0
Accepted
time: 19ms
memory: 27384kb

input:

77 18 511543

output:

35070

result:

ok single line: '35070'

Test #22:

score: 0
Accepted
time: 36ms
memory: 27380kb

input:

37 32 987861

output:

57612

result:

ok single line: '57612'

Test #23:

score: 0
Accepted
time: 13ms
memory: 21856kb

input:

29 8 300899

output:

48059

result:

ok single line: '48059'

Test #24:

score: 0
Accepted
time: 24ms
memory: 22848kb

input:

73 83 533839

output:

13745

result:

ok single line: '13745'

Test #25:

score: 0
Accepted
time: 6ms
memory: 23680kb

input:

12 23 181193

output:

23008

result:

ok single line: '23008'

Test #26:

score: 0
Accepted
time: 19ms
memory: 27280kb

input:

2 2 864514

output:

864514

result:

ok single line: '864514'

Test #27:

score: 0
Accepted
time: 3ms
memory: 21876kb

input:

27 7 165249

output:

29765

result:

ok single line: '29765'

Test #28:

score: 0
Accepted
time: 17ms
memory: 27332kb

input:

15 2 751665

output:

429522

result:

ok single line: '429522'

Test #29:

score: 0
Accepted
time: 14ms
memory: 27340kb

input:

2 16 818146

output:

460207

result:

ok single line: '460207'

Test #30:

score: 0
Accepted
time: 22ms
memory: 25292kb

input:

43 88 631366

output:

21860

result:

ok single line: '21860'

Test #31:

score: 0
Accepted
time: 0ms
memory: 22564kb

input:

215 1222 3597

output:

18

result:

ok single line: '18'

Test #32:

score: 0
Accepted
time: 13ms
memory: 23024kb

input:

9619 3375 604892

output:

241

result:

ok single line: '241'

Test #33:

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

input:

861 1924 311511

output:

522

result:

ok single line: '522'

Test #34:

score: 0
Accepted
time: 20ms
memory: 23572kb

input:

9249 3782 866972

output:

322

result:

ok single line: '322'

Test #35:

score: 0
Accepted
time: 6ms
memory: 22724kb

input:

7055 8386 206874

output:

53

result:

ok single line: '53'

Test #36:

score: 0
Accepted
time: 0ms
memory: 21800kb

input:

6273 7732 122377

output:

34

result:

ok single line: '34'

Test #37:

score: 0
Accepted
time: 3ms
memory: 22192kb

input:

8057 7746 89137

output:

22

result:

ok single line: '22'

Test #38:

score: 0
Accepted
time: 0ms
memory: 22664kb

input:

9215 8952 74618

output:

16

result:

ok single line: '16'

Test #39:

score: 0
Accepted
time: 7ms
memory: 22268kb

input:

7246 3709 129579

output:

51

result:

ok single line: '51'

Test #40:

score: 0
Accepted
time: 15ms
memory: 22212kb

input:

4052 6785 831888

output:

327

result:

ok single line: '327'

Test #41:

score: 0
Accepted
time: 3ms
memory: 22832kb

input:

9 2 91067

output:

56916

result:

ok single line: '56916'

Test #42:

score: 0
Accepted
time: 24ms
memory: 27388kb

input:

10 3 913595

output:

406041

result:

ok single line: '406041'

Test #43:

score: 0
Accepted
time: 4ms
memory: 27204kb

input:

2 2 152575

output:

152575

result:

ok single line: '152575'

Test #44:

score: 0
Accepted
time: 22ms
memory: 27212kb

input:

2 2 927771

output:

927771

result:

ok single line: '927771'

Test #45:

score: 0
Accepted
time: 16ms
memory: 22656kb

input:

6 7 637014

output:

200204

result:

ok single line: '200204'

Test #46:

score: 0
Accepted
time: 13ms
memory: 27348kb

input:

5 3 721417

output:

400786

result:

ok single line: '400786'

Test #47:

score: 0
Accepted
time: 6ms
memory: 25784kb

input:

5 9 183079

output:

57538

result:

ok single line: '57538'

Test #48:

score: 0
Accepted
time: 12ms
memory: 27324kb

input:

9 2 579290

output:

362055

result:

ok single line: '362055'

Test #49:

score: 0
Accepted
time: 17ms
memory: 27320kb

input:

3 4 546909

output:

341817

result:

ok single line: '341817'

Test #50:

score: 0
Accepted
time: 17ms
memory: 27280kb

input:

2 2 932611

output:

932611

result:

ok single line: '932611'