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)
上一篇 2021年12月2日 下午9:00
下一篇 2021年12月2日 下午9:00


相关推荐

  • Flink Native Kubernetes实战

    Flink Native Kubernetes实战

    2020年11月19日
    172
  • SQL约束语法

    SQL约束语法约束作用 对表中的数据进行限定 保证数据的正确性 有效性 完整性 约束分类 约束说明 PRIMARYKEY 主键约束 PRIMARYKEYAU INCREMENT 主键 自动增长 UNIQUE 唯一约束 NOTNULL 非空约束 FOREIGNKEY 外键约束 FOREIGNKEYON 外键级联更新 FOREIGNKEYON 外键级联删除主键约束 主键约束特点主

    2026年3月19日
    2
  • 格兰杰因果关系检验命令_超声波传感器应用实例及原理

    格兰杰因果关系检验命令_超声波传感器应用实例及原理诺贝尔经济学奖获得者,计量经济学大师克莱夫·格兰杰(CliveGranger)从预测的角度给出了因果关系的一种描述性定义,这就是我们现在所熟知的Granger因果关系。格兰杰因果关系检验是计量经济方法中常用的一种检验方法

    2025年8月14日
    6
  • AD域的详细介绍「建议收藏」

    AD域的详细介绍「建议收藏」文章目录1、什么是域2、内网的环境:3、域的组成:4、域的部署域账号登录成员机的过程:组策略GPO(GroupPolicy)1、什么是域Domain:域是计算机网络的一种形式,其中所有用户账户,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。两个域之间可以通过建立信任(Trust)关系来进行联系2、内网的环境:1)工作组:默认模式,人人平等,但是不方便管理2)域:人人不平等,优点:可以实现集中管理、统一管理3、域的组成:1)域控制器(DC:D

    2022年5月13日
    77
  • startservice生命周期_task scheduler 启动后停止

    startservice生命周期_task scheduler 启动后停止ExecutorService接口继承了Executor接口,定义了一些生命周期的方法Java代码publicinterfaceExecutorServiceextendsExecutor{ voidshutdown(); List<Runnable>shutdownNow(); booleanisShutdown(); bool…

    2025年10月20日
    5
  • ComfyUI 便宜的GPT Image和Flux、Flux Kontext插件

    ComfyUI 便宜的GPT Image和Flux、Flux Kontext插件

    2026年3月16日
    2

发表回复

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

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