CSES - Putka Open 2015 – 2/6 - Results
Submission details
Task:Pussit
Sender:
Submission time:2015-08-16 18:17:41 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.06 s1details
#20.05 s2details
#30.04 s3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:93:8: warning: unused variable 'jal' [-Wunused-variable]
     ll jal = m-(n-1)*su;
        ^
input/code.cpp: In function 'long long int hae(long long int, long long int, long long int)':
input/code.cpp:52:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^

Code

#include <bits/stdc++.h>

#define ll long long
#define ull unsigned long long

#define pii pair<int, int>
#define pll pair<long long, long long>

#define defmod 1000000007
using namespace std;

bool ok(ll n, ll m, ll t){
	ll mel = (n-1)*t;
	if(m-mel < t)
		return false;
	return true;
}
ll hae(ll n, ll m, ll k){
	if(m < n){
			ll re = n-m+k;
			return re;
		}
	ll su = 0;
			ll a = 0, b = 1500000000;
			unordered_set<ll> kk;
			while(a < b){
				ll mid = (a+b)/2;
				if(kk.count(mid)){
					break;
				}
				kk.insert(mid);
				
				if(!ok(n, m, mid)){
					b = mid-1;
				}
				else{
					a = mid;
				}
			}
			su = (a+b)/2;
			if(ok(n, m, su+1))
				su++;
			//cout << "su " << su << endl;
 			if((k-su) <= 0){
				return k;
				
			}
			else{

				cout << k+1 << endl;
			}
}
int main(){
	cin.sync_with_stdio(0);
	cin.tie(0);
	
	int t; cin >> t;
	while(t--){
		ll n, m, k;
		cin >> n >> m >> k;
		if(m < n){
			ll re = n-m+k;
			cout << re << endl;
		}
		else{
			ll su = 0;
			ll a = 0, b = 1500000000;
			unordered_set<ll> kk;
			while(a < b){
				ll mid = (a+b)/2;
				if(kk.count(mid)){
					break;
				}
				kk.insert(mid);
				
				if(!ok(n, m, mid)){
					b = mid-1;
				}
				else{
					a = mid;
				}
			}
			su = (a+b)/2;
			if(ok(n, m, su+1))
				su++;
			//cout << "su " << su << endl;
 			if((k-su) <= 0){
				cout << k << endl;
				
			}
			else{

				ll jal = m-(n-1)*su;
				if(k-(n-1)*su <= 0){
					cout << k << endl;

				}
				else{
					cout << k+(n-1) << 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
2
19
15
1
1
...

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
1378
3881
1440
2057
7201
...

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
544279388
164139442
1692116929
1118806577
547470112
...