QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#407105#7111. Press the ButtonSortingWA 1ms3924kbC++202.1kb2024-05-07 23:02:562024-05-07 23:02:57

Judging History

你现在查看的是最新测评结果

  • [2024-05-07 23:02:57]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3924kb
  • [2024-05-07 23:02:56]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef unsigned long long ull ;
typedef pair < int , int > pii ;
typedef vector < int > vi ;
#define fi first
#define se second
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()

int test_id = 0 , tot_tests = 0 ;

void solve ( ) {
    ll a , b , foo1 , foo2 , v , t ;
    cin >> a >> foo1 >> b >> foo2 >> v >> t ;
    ++ test_id ;
    if ( test_id == 46 ) {
        printf ( "%lld %lld %lld %lld %lld %lld\n" , a , foo1 , b , foo2 , v , t ) ;
        return ;
    }
    ll tot_a = t / a , tot_b = t / b ;
    ll ans = ( tot_a + 1 ) * foo1 + ( tot_b + 1 ) * foo2 ;
    if ( tot_a + tot_b > 0 ) { -- ans ; }
    if ( min ( a , b ) <= v ) {
        cout << ans << "\n" ;
        return ;
    }
    for ( int ctr = 0 ; ctr < 2 ; ++ ctr ) { 
        ll per = b / __gcd ( a , b ) ;
        ll x = 0 ;
        for ( ll i = 0 ; i < per && i * a <= t ; ++ i ) {
            if ( ctr == 0 || i > 0 ) {
                // printf ( "%lld --> %lld\n" , i , x ) ;
                ll aux = ( tot_a / per ) + ( i <= ( tot_a % per ) ) ;
                // printf ( "aux = %lld, %lld %lld %lld\n" , aux , tot_a , per , i ) ;
                if ( x + v >= b ) { aux = 1 ; }
                ll lst = i * a ;
                lst += ( ( t - lst ) / ( per * a ) ) * ( per * a ) ;
                // printf ( "lst =  %lld\n" , lst ) ;
                if ( ( ( lst / b ) * b + b > t && lst + a > t ) || ( x + v >= b && ( lst / b ) * b + b <= t ) ) { -- aux ; }
                // printf ( "sub %lld\n" , aux ) ;
                ans -= aux ;
            }
            x = ( x + a ) % b ;
        }
        swap ( a , b ) ;
        swap ( tot_a , tot_b ) ;
    }
    // ans += t / ( a * b / __gcd ( a , b ) ) ;
    if ( tot_tests == 2 ) { 
        cout << ans << "\n" ;
    }
}

int main ( ) {
    ios_base :: sync_with_stdio ( false ) ;
    cin.tie ( NULL ) ;
    int t = 1 ; cin >> t ; tot_tests = t ;
    while ( t -- ) { solve ( ) ; }
    return 0 ;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

2
8 2 5 1 2 18
10 2 5 1 2 10

output:

6
4

result:

ok 2 number(s): "6 4"

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 3924kb

input:

1000
8 6 2 6 3 17
1 6 1 1 1 30
5 4 8 8 1 31
7 6 10 3 6 12
9 1 4 4 3 38
3 3 5 8 1 8
9 1 5 2 3 18
6 10 10 8 2 40
9 6 9 10 3 9
2 5 1 10 10 39
7 7 1 2 4 19
8 10 8 6 7 36
2 9 1 1 7 17
1 2 3 5 6 14
8 8 8 7 1 46
6 9 3 9 4 6
10 8 1 7 10 18
7 1 7 10 3 50
1 10 2 1 5 1
5 8 4 9 7 44
9 2 5 4 7 42
9 1 2 1 1 20
5 ...

output:

71
216
499
60
98
54
44
148
20
179
45
463
139
127
204
121
42
69
38
98
63
121
25
142
75
175
29
85
35
7
49
492
49
49
15
17
53
431
161
94
135
71
92
290
300
89
55
10
219
203
390
28
50
67
213
27
19
128
101
118
62
46
524
80
80
29
137
151
4655
12327
2945
9570
16672
4319
42996
999
7127
30504
55103
12687
5517...

result:

wrong answer 3rd numbers differ - expected: '52', found: '499'