QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#143315#7026. Let the Flames BeginSorting#AC ✓1101ms527588kbC++202.3kb2023-08-21 02:13:342023-08-21 02:13:37

Judging History

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

  • [2023-08-21 02:13:37]
  • 评测
  • 测评结果:AC
  • 用时:1101ms
  • 内存:527588kb
  • [2023-08-21 02:13:34]
  • 提交

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 ;


ll ksmall ( ll n , ll m , ll k ) {
    ll taken = 0 , rem = n ;
    ll x = ( k % n ) ;
    if ( x == 0 ) { x = n ; }
    vector < ll > v ;
    ll ans = -1 ;
    while ( 1 ) {
        ll tot = 1 + ( rem - x ) / k ;
        if ( taken + tot >= m ) {
            ans = x + ( m - taken - 1 ) * k ;
            break ;
        }
        else {
            v.push_back ( x ) ;
            ll lst = x + ( tot - 1 ) * k ;
            x = k - ( rem - lst ) ;
            taken += tot , rem -= tot ;
            x %= rem ;
            if ( x == 0 ) { x = rem ; }
        }
    }
    reverse ( v.begin ( ) , v.end ( ) ) ;
    for ( auto st : v ) {
        if ( st <= ans ) {
            ll coef = 1 + ( ans - st ) / ( k - 1 ) ;
            ans += coef ;
        }
    }
    return ans ;
}

ll msmall ( ll n , ll m , ll k ) {
    ll ans = 0 ;
    for ( ll i = n - m + 1 ; i <= n ; ++ i ) {
        ll pos = k % i ;
        if ( pos == 0 ) { pos = i ; }
        ans = ans + pos ;
        if ( ans > i ) { ans -= i ; }
    }
    return ans ;
}

void test ( ) {
    for ( int i = 1 ; i <= 100 ; ++ i ) {
        for ( int j = 1 ; j <= i ; ++ j ) {
            for ( int t = 1 ; t <= 100 ; ++ t ) {
                if ( ksmall ( i , j , t ) != msmall ( i , j , t ) ) {
                    cout << i << " " << j << " " << t << " ---> " << ksmall ( i , j , t ) << " " << msmall ( i , j , t ) << "\n" ;
                    return ;
                }
            }
        }
    }
}


void solve ( ) {
    ll n , m , k ;
    cin >> n >> m >> k ;
    ++ test_id ;
    cout << "Case #" << test_id << ": " ;
    if ( k == 1 ) {
        cout << m << "\n" ;
        return ;
    }
    if ( k <= m ) {
        cout << ksmall ( n , m , k ) << "\n" ;
    }
    else {
        cout << msmall ( n , m , k ) << "\n" ;
    }
}

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


这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

20
10 1 2
10 2 2
10 3 2
10 4 2
10 5 2
10 6 2
10 7 2
10 8 2
10 9 2
10 10 2
10 1 3
10 2 3
10 3 3
10 4 3
10 5 3
10 6 3
10 7 3
10 8 3
10 9 3
10 10 3

output:

Case #1: 2
Case #2: 4
Case #3: 6
Case #4: 8
Case #5: 10
Case #6: 3
Case #7: 7
Case #8: 1
Case #9: 9
Case #10: 5
Case #11: 3
Case #12: 6
Case #13: 9
Case #14: 2
Case #15: 7
Case #16: 1
Case #17: 8
Case #18: 5
Case #19: 10
Case #20: 4

result:

ok 20 lines

Test #2:

score: 0
Accepted
time: 1005ms
memory: 265432kb

input:

1000
999999999999992561 159 395327336264586619
442108849746740138 442108849746736034 460
999999999999992483 170 493046129512466597
999999999999994068 441 350960072694194744
999999999999995777 999999999999990118 67
999999999999991275 999999999999983373 331
999999999999990404 999999999999985608 429
99...

output:

Case #1: 857046466069738524
Case #2: 294578226925711387
Case #3: 817842017119952395
Case #4: 773392058140829462
Case #5: 522542636681279298
Case #6: 855114113325419851
Case #7: 21226015093289476
Case #8: 233100
Case #9: 641511906156530773
Case #10: 93961109024303404
Case #11: 230107545980257170
Case...

result:

ok 1000 lines

Test #3:

score: 0
Accepted
time: 1101ms
memory: 527588kb

input:

1
999999999999999944 999999999999999890 2000000

output:

Case #1: 164945406307572169

result:

ok single line: 'Case #1: 164945406307572169'