CSES - Putka Open 2015 – 2/6 - Results
Submission details
Task:Pussit
Sender:
Submission time:2015-08-15 20:52:37 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1--1details
#2--2details
#3--3details

Code

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <iomanip>

#define uint unsigned int
#define INF 999999999
#define ll long long
#define M 1000000007
#define E 0.0000001
#define N 1024

using namespace std;

int main()
{
    int t;
    cin>>t;
    for (int i = 0; i < t; i++) {
        int n, m, k;
        cin>>n>>m>>k;

        if ((k / n + (k % n == 0 ? 0 : 1)) * n <= m) cout<<k<<endl;
        else {
            int ans = n;
            int mx = -1;
            if (m % ans <= (n * (m / ans) - (ans * (m / ans)))) mx = max(mx, ans);
            else mx = max(mx, m % ans);
            ans--;
            int l = (n - mx) * n * (n / ans);
            int h = n * (n / ans);
            int r = n - mx;

            for (int i = 0; i < 100; i++) {
                if (l == 0 || r <= 0) break;
                mx += r / 2;
                l -= r / 2 + r / 2 * h;
                r -= r / 2;
            }

            while (l || r > 1) {
                mx += min(h, r);
                l -= min(h, r) + min(h, r) * h;
                r -= min(h, r);
            }
            cout<<n - mx + k<<endl;
        }
    }

    return 0;
}

Test details

Test 1

Group: 1

Verdict:

input
1000
11 16 2
5 16 15
2 14 14
9 11 1
...

correct output
2
15
14
1
1
...

user output
(empty)

Test 2

Group: 2

Verdict:

input
1000
1436 3023 1378
4419 4559 3881
115 4220 1440
3556 3152 1653
...

correct output
1378
3881
1440
2057
5312
...

user output
(empty)

Test 3

Group: 3

Verdict:

input
1000
337723917 939459738 544279388
233319567 486500388 164139442
722536320 995223331 969580610
274242146 994174001 844564432
...

correct output
544279388
164139442
1194505265
870263078
547470112
...

user output
(empty)