QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#143312#7026. Let the Flames BeginSorting#WA 911ms265456kbC++201.8kb2023-08-21 01:48:002023-08-21 01:48:02

Judging History

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

  • [2023-08-21 01:48:02]
  • 评测
  • 测评结果:WA
  • 用时:911ms
  • 内存:265456kb
  • [2023-08-21 01:48:00]
  • 提交

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 ;

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

        }
        cout << ans << "\n" ;
    }
    else {
        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 ; }
        }
        cout << ans << "\n" ;
    }
}

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


详细

Test #1:

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

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: -100
Wrong Answer
time: 911ms
memory: 265456kb

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:

wrong answer 84th lines differ - expected: 'Case #84: 943644298395613326', found: 'Case #84: 966531719651114931'