Submission #312686

#TimeUsernameProblemLanguageResultExecution timeMemory
312686joseacazHiring (IOI09_hiring)C++17
53 / 100
1600 ms21576 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#define MAXN 500005

using namespace std;
typedef long long lld;

struct Workers
{
	lld ind;
	double s, q;
};

lld N, W, amount_w, max_w;
double price_q, tot_s, max_s, prices[MAXN];
Workers worker[MAXN];
vector < lld > list, workerList;

bool cmp ( Workers _a, Workers _b )
{
	if ( _a.q == _b.q )
		return _a.s < _b.s;
	return _a.q < _b.q;
}

int main ()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	cin >> N >> W;
	for ( lld i = 0; i < N; i++ )
		cin >> worker[i].s >> worker[i].q, worker[i].ind = i + 1;
	
	sort ( worker, worker + N, cmp );

	for ( lld i = 0; i < N; i++ )
		prices[i] = worker[i].s / worker[i].q;
	
	sort ( prices, prices + N );
	
	for ( lld i = 0; i < N; i++ )
	{
		if ( i > 0 && prices[i] == prices[i - 1] )
			continue;
		price_q = prices[i];
		amount_w = 0;
		tot_s = 0;
		workerList.clear();
		for ( lld j = 0; j < N; j++ )
			if ( price_q * worker[j].q >= worker[j].s && tot_s + (price_q * worker[j].q) <= W )
				amount_w++, tot_s += price_q * worker[j].q, workerList.push_back(worker[j].ind);

		if ( amount_w > max_w )
		{
			max_w = amount_w;
			max_s = tot_s;
			list = workerList;
		}
		else if ( amount_w == max_w && tot_s < max_s )
		{
			tot_s = max_s;
			list = workerList;
		}
	}
	
	cout << max_w << "\n";
	for ( lld i = 0; i < list.size(); i++ )
		cout << list[i] << "\n";
	return 0;
}

Compilation message (stderr)

hiring.cpp: In function 'int main()':
hiring.cpp:67:21: warning: comparison of integer expressions of different signedness: 'lld' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |  for ( lld i = 0; i < list.size(); i++ )
      |                   ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...