QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#407107#7111. Press the ButtonSortingWA 1ms3768kbC++202.1kb2024-05-07 23:03:412024-05-07 23:03:42

Judging History

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

  • [2024-05-07 23:03:42]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3768kb
  • [2024-05-07 23:03:41]
  • 提交

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 ) {
        if ( tot_tests == 2 ) { 
            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: 3680kb

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: 0ms
memory: 3768kb

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:

8 3 9 9 10 2

result:

wrong answer 1st numbers differ - expected: '71', found: '8'