83B - Doctor - CodeForces Solution


binary search math sortings *1800

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>



#define pb push_back

#define rep(i,a,b) for( int i = a; i < b; i++ )

#define debug(a) cout << #a << " = " << a << endl;

#define debug2(a,b) cout << #a << " = " << a << " --- " << #b << " = " << b << endl;



using namespace std;



typedef long long int ll;



int main(){

	ll n, k, t[100100], sum = 0;

	

	scanf("%I64d%I64d", &n, &k );

	rep( i, 0, n ){

		scanf("%I64d", &t[i] );

		sum += t[i];

	}

	

	if( sum < k ){

		puts("-1");

		return 0;

	}

	ll lo = 1, hi = 1e9, mid, x;

	while( lo <= hi ){

		mid = (lo+hi)/2;

		sum = 0;

		rep( i, 0, n ) sum += min( t[i], mid );

		if( sum > k ) hi = mid-1;

		else{

			x = mid;

			lo = mid+1;

		}

	}

	

	rep( i, 0, n ){

		k -= min( t[i], x );

		t[i] -= x;

	}

	int p;

	for( p = 0; k; p++ ){

		if( t[p] > 0 ) k--, t[p]--;

	}

	rep( i, p, n ) if( t[i] > 0 ) printf("%d ", i+1 );

	rep( i, 0, p ) if( t[i] > 0 ) printf("%d ", i+1 );

	printf("\n");

}




Comments

Submit
0 Comments
More Questions

869. Reordered Power of 2
1593C - Save More Mice
1217. Minimum Cost to Move Chips to The Same Position
347. Top K Frequent Elements
1503. Last Moment Before All Ants Fall Out of a Plank
430. Flatten a Multilevel Doubly Linked List
1290. Convert Binary Number in a Linked List to Integer
1525. Number of Good Ways to Split a String
72. Edit Distance
563. Binary Tree Tilt
1306. Jump Game III
236. Lowest Common Ancestor of a Binary Tree
790. Domino and Tromino Tiling
878. Nth Magical Number
2099. Find Subsequence of Length K With the Largest Sum
1608A - Find Array
416. Partition Equal Subset Sum
1446. Consecutive Characters
1618A - Polycarp and Sums of Subsequences
1618B - Missing Bigram
938. Range Sum of BST
147. Insertion Sort List
310. Minimum Height Trees
2110. Number of Smooth Descent Periods of a Stock
2109. Adding Spaces to a String
2108. Find First Palindromic String in the Array
394. Decode String
902. Numbers At Most N Given Digit Set
221. Maximal Square
1200. Minimum Absolute Difference