1056. Mice and Rice (25)

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int np, ng;
	scanf("%d%d", &np, &ng);

	int weight[1010], i;
	for(i = 0; i < np; i++)
	{
		scanf("%d", &weight[i]);
	}

	vector<int> v[2];
	int order;

	for(i = 0; i < np; i++)
	{
		scanf("%d", &order);
		v[0].push_back(order);
	}

	int res[1010], size, group, j, max, maxindex, curindex, curweight;
	while(1)
	{
		size = v[0].size();
		if(size == 1)
		{
			res[v[0][0]] = 1;
			break;
		}

		group = size / ng;
		if(size % ng > 0)
		{
			group++;
		}

		for(i = 0; i < group; i++)
		{
			max = -1;

			for(j = i * ng; j < (i + 1) * ng && j < size; j++)
			{
				curindex = v[0][j];
				curweight = weight[curindex];
				res[curindex] = group + 1;

				if(curweight > max)
				{
					max = curweight;
					maxindex = curindex;
				}
			}

			v[1].push_back(maxindex);
		}

		v[0] = v[1];
		v[1].clear();
	}

	for(i = 0; i < np; i++)
	{
		if(i > 0)
		{
			printf(" ");
		}

		printf("%d", res[i]);
	}

	printf("\n");

	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:10  王景迁  阅读(2)  评论(0)    收藏  举报

导航