USACO Section 2.1 Sorting a Three-Valued Sequence

USACO Section 2.1 Sorting a Three-Valued Sequence

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

/*
ID: lucien23
PROG: sort3
LANG: C++
*/

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
void exchange(int nums[], int begin, int end, int N, int x);
int sum = 0;
int main()
{
	ifstream infile("sort3.in");
	ofstream outfile("sort3.out");
	if(!infile || !outfile)
	{
		cout << "file operation failure!" << endl;
		return -1;
	}

	int N;
	infile >> N;
	int *nums = new int[N];
	int count1, count2, count3;
	count1 = count2 = count3 = 0;
	for (int i=0; i<N; i++)
	{
		infile >> nums[i];
		switch (nums[i])
		{
		case 1:
			count1++;
			break;
		case 2:
			count2++;
			break;
		case 3:
			count3++;
			break;
		default:
			break;
		}
	}

	exchange(nums, 0, count1, N, 1);
	exchange(nums, count1, count1+count2, N, 2);

	outfile << sum << endl;

	return 0;
}

/*
 *交换时将大的交换到后面,小的交换到前面
 */
void exchange(int nums[], int begin, int end, int N, int x)
{
	int count0 = 0;
	vector<int> vecNum;
	for (int i=begin; i<end; i++)
	{
		if (nums[i] != x)
		{
			count0++;
			vecNum.push_back(nums[i]);
			nums[i] = x;
		}
	}
	sum += count0;

	sort(vecNum.begin(), vecNum.end());
	for (int i=end, j=0; i<N && count0>0; i++)
	{
		if (nums[i] == 1)
		{
			nums[i] = vecNum[j];
			j++;
			count0--;
		}
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118677.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Excel vba编程实例 源码

    Excel vba编程实例 源码 PrivateSubCommandButton1_Click()AddOneAddNewFourthOneWorksheets(“Sheet2”).ActivateSeveralRowsClearRangeSetValueEnterValueCycleThroughEndSubSubAddOne()Workbooks.AddEndSubSubAddNew()

    2022年5月25日
    39
  • 机器学习、云计算与智能挖掘国际会议MLCCIM2022

    机器学习、云计算与智能挖掘国际会议MLCCIM2022会议基本信息【会议简称】:MLCCIM2022【会议全称】:InternationalConferenceonMachineLearning,CloudComputingandIntelligentMining【截稿日期】:2022年3月21日【会议时间】:2022年5月27-29日【大会官网】:http://www.mlccim.org/【投稿邮箱】:mlccim@126.com【会议地点】:中国·厦门【收录检索】:EI、Scopus大会主席龙汉,

    2022年7月25日
    35
  • 随机数:真随机数和伪随机数一样吗_rdrand真随机数

    随机数:真随机数和伪随机数一样吗_rdrand真随机数说到随机这个词,相信各位肯定都深有体会了。生活中有太多的不确定因素从各方各面影响着我们,但也正是因为这样我们的人生更加多彩,具有了更多的可能性。可以说,随机是个非常有魅力的东西。而游戏开发者通常也会利用随机让游戏更加的吸引人。例如你正在玩的手机游戏里面的抽卡系统就是很好的例子。笔者曾经在阴阳师的抽符大坑中痛苦不堪。什么,你只玩王者荣耀?那里面的抽英雄抽符文,我想你应该也经历过绝望吧。

    2025年8月18日
    2
  • HashMap遍历的五种方法「建议收藏」

    HashMap遍历的五种方法「建议收藏」HashMap遍历的五种方法

    2022年9月9日
    2
  • java typereference_Java泛型 | Jackson TypeReference获取泛型类型信息「建议收藏」

    java typereference_Java泛型 | Jackson TypeReference获取泛型类型信息「建议收藏」前言Jackson是一个比较流行的Json序列化和反序列化框架。本文以Jackson为例介绍TypeReference实现涉及泛型的反序列化,及TypeReference的实现原理。对于获取泛型类型信息的场景,TypeReference是一个可以参考的通用解决方案。实例JacksonObjectMapper的readValue可以将Json字符串反序列化为Java对象。如下例中将[{“id”:n…

    2022年6月17日
    76
  • JPA:@Modifying注解(UPDATE或者DELETE)

    JPA:@Modifying注解(UPDATE或者DELETE)通过 Modifying 注解可以完成修改 UPDATE 或者 DELETE 操作 注意 不支持新增 示例 packagecom newcapec dao repository pay importcom newcapec dao domain UserEnroll importorg springframew data jpa repository JpaRe

    2025年9月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号