QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#821973#9061. Streets BehindTeapot#TL 90ms3704kbC++232.3kb2024-12-19 20:00:272024-12-19 20:00:27

Judging History

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

  • [2024-12-19 20:00:27]
  • 评测
  • 测评结果:TL
  • 用时:90ms
  • 内存:3704kb
  • [2024-12-19 20:00:27]
  • 提交

answer

/** gnu specific **/
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
/** contains everything I need in std **/
#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(S) ((int)S.size())
#define FOR(i, st_, n) for(int i = st_; i < n; ++i)
#define RFOR(i, n, end_) for(int i = (n)-1; i >= end_; --i)
#define x first
#define y second
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef pair<double, double> pdd;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ull, ull> pull;
using namespace __gnu_pbds;
typedef tree<ll, null_type, less<>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
using namespace std;
typedef ll int_128;
#ifdef ONPC
mt19937 rnd(228);
#else
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
#endif

int32_t main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    ll t;
    cin >> t;
    ll c = 10000;
    ll c1 = 100;
    FOR(_,0,t)
    {
        ll n,k,a,b;
        cin >> k >> n >> a >> b;
        ll res = 0;
        ll cur;
        if(k*(b-a) < a)
        {
            res = -1;
        }
        else {
            bool t = true;
        while(n > 0)
        {
            cur = (k*(b-a))/a;
            if(t){
            if(((k+cur*c)*(b-a))/a == cur)
            {
                if(n < cur * c)
                {
                    c = n/cur;
                }
                k+= cur*c;
                res+= c;
                n-= cur*c;
            }
            if(n <= 0)
                break;
            cur = (k*(b-a))/a;
            if(((k+cur*c)*(b-a))/a == cur)
            {
                if(n < cur * c1)
                {
                    c1 = n/cur;
                }
                k+= cur*c1;
                res+= c1;
                n-= cur*c1;
            }
            if(n <= 0)
                break;
            }
            else
                t = false;
            //cout << k << ' ';
            n -= (k*(b-a))/a;
            k += (k*(b-a))/a;
            res++;
        }
        }
        cout << res << endl;
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

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

output:

3
1
1

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 1ms
memory: 3576kb

input:

54
1 1 1 1
1 1 1 2
1 1 1 3
1 1 2 2
1 1 2 3
1 1 3 3
1 2 1 1
1 2 1 2
1 2 1 3
1 2 2 2
1 2 2 3
1 2 3 3
1 3 1 1
1 3 1 2
1 3 1 3
1 3 2 2
1 3 2 3
1 3 3 3
2 1 1 1
2 1 1 2
2 1 1 3
2 1 2 2
2 1 2 3
2 1 3 3
2 2 1 1
2 2 1 2
2 2 1 3
2 2 2 2
2 2 2 3
2 2 3 3
2 3 1 1
2 3 1 2
2 3 1 3
2 3 2 2
2 3 2 3
2 3 3 3
3 1 1 1
3...

output:

-1
1
1
-1
-1
-1
-1
2
1
-1
-1
-1
-1
2
2
-1
-1
-1
-1
1
1
-1
1
-1
-1
1
1
-1
2
-1
-1
2
1
-1
3
-1
-1
1
1
-1
1
-1
-1
1
1
-1
2
-1
-1
1
1
-1
2
-1

result:

ok 54 lines

Test #3:

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

input:

54
10 10 10 10
10 10 10 11
10 10 10 12
10 10 11 11
10 10 11 12
10 10 12 12
10 11 10 10
10 11 10 11
10 11 10 12
10 11 11 11
10 11 11 12
10 11 12 12
10 12 10 10
10 12 10 11
10 12 10 12
10 12 11 11
10 12 11 12
10 12 12 12
11 10 10 10
11 10 10 11
11 10 10 12
11 10 11 11
11 10 11 12
11 10 12 12
11 11 10 ...

output:

-1
10
5
-1
-1
-1
-1
11
5
-1
-1
-1
-1
11
5
-1
-1
-1
-1
10
4
-1
10
-1
-1
10
5
-1
11
-1
-1
11
5
-1
12
-1
-1
9
4
-1
10
-1
-1
10
5
-1
11
-1
-1
10
5
-1
11
-1

result:

ok 54 lines

Test #4:

score: 0
Accepted
time: 1ms
memory: 3696kb

input:

54
4 4 4 4
4 4 4 5
4 4 4 6
4 4 5 5
4 4 5 6
4 4 6 6
4 5 4 4
4 5 4 5
4 5 4 6
4 5 5 5
4 5 5 6
4 5 6 6
4 6 4 4
4 6 4 5
4 6 4 6
4 6 5 5
4 6 5 6
4 6 6 6
5 4 4 4
5 4 4 5
5 4 4 6
5 4 5 5
5 4 5 6
5 4 6 6
5 5 4 4
5 5 4 5
5 5 4 6
5 5 5 5
5 5 5 6
5 5 6 6
5 6 4 4
5 6 4 5
5 6 4 6
5 6 5 5
5 6 5 6
5 6 6 6
6 4 4 4
6...

output:

-1
4
2
-1
-1
-1
-1
5
2
-1
-1
-1
-1
5
3
-1
-1
-1
-1
4
2
-1
4
-1
-1
4
2
-1
5
-1
-1
5
3
-1
6
-1
-1
3
2
-1
4
-1
-1
4
2
-1
5
-1
-1
4
2
-1
5
-1

result:

ok 54 lines

Test #5:

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

input:

54
7 7 7 7
7 7 7 8
7 7 7 9
7 7 8 8
7 7 8 9
7 7 9 9
7 8 7 7
7 8 7 8
7 8 7 9
7 8 8 8
7 8 8 9
7 8 9 9
7 9 7 7
7 9 7 8
7 9 7 9
7 9 8 8
7 9 8 9
7 9 9 9
8 7 7 7
8 7 7 8
8 7 7 9
8 7 8 8
8 7 8 9
8 7 9 9
8 8 7 7
8 8 7 8
8 8 7 9
8 8 8 8
8 8 8 9
8 8 9 9
8 9 7 7
8 9 7 8
8 9 7 9
8 9 8 8
8 9 8 9
8 9 9 9
9 7 7 7
9...

output:

-1
7
3
-1
-1
-1
-1
8
4
-1
-1
-1
-1
8
4
-1
-1
-1
-1
7
3
-1
7
-1
-1
7
4
-1
8
-1
-1
8
4
-1
9
-1
-1
6
3
-1
7
-1
-1
7
3
-1
8
-1
-1
7
3
-1
8
-1

result:

ok 54 lines

Test #6:

score: 0
Accepted
time: 74ms
memory: 3552kb

input:

100
87279562 988175500 990523511 990564829
87279562 988175500 990523511 990564829
87279562 988175500 990523511 990564829
87279562 988175500 990523511 990564829
87279562 988175500 990523511 990564829
87279562 988175500 990523511 990564829
87279562 988175500 990523511 990564829
87279562 988175500 9905...

output:

60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
60211
...

result:

ok 100 lines

Test #7:

score: 0
Accepted
time: 90ms
memory: 3704kb

input:

100
87839551 946797927 997674962 997719821
84639029 937626238 967565279 967605464
88780980 927643809 977431321 977456494
87414331 969173593 998994970 999022111
86792036 944654580 998921274 998952614
83742396 964865875 998076549 998106097
84763083 979606748 990526157 990570521
82405631 918491597 9978...

output:

54855
59992
94669
91739
78901
85381
56499
61590
44734
99317
54855
59992
94669
91739
78901
85381
56499
61590
44734
99317
54855
59992
94669
91739
78901
85381
56499
61590
44734
99317
54855
59992
94669
91739
78901
85381
56499
61590
44734
99317
54855
59992
94669
91739
78901
85381
56499
61590
44734
99317
...

result:

ok 100 lines

Test #8:

score: -100
Time Limit Exceeded

input:

100
1000000000 500000000 500000000 500000001
1000000000 333333333 333333333 333333334
1000000000 250000000 250000000 250000001
1000000000 200000000 200000000 200000001
1000000000 166666666 166666666 166666667
1000000000 142857142 142857142 142857143
1000000000 125000000 125000000 125000001
100000000...

output:

250000000
111111111
62500000
40000000
27777778
20408164
15625000

result: