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


相关推荐

  • Spring Boot+Vue开发实战_有关理解的图片带字

    Spring Boot+Vue开发实战_有关理解的图片带字SpringBootspringboot是依赖于spring的,bi’qi

    2022年8月21日
    7
  • 我学MSMQ(二)

    我学MSMQ(二)

    2021年8月28日
    62
  • vue todolist案例_nodejs mvc

    vue todolist案例_nodejs mvc1.应用模板下载:TodoMVC案例官网:http://todomvc.com如图下载模板:2.npm安装依赖通过nmp安装相关依赖,进入vscode,找到文件,右键点击在集成终端中打开,输入命令npmi进行安装;并且安装npmivue@2.6.103.引入Vue.js我们在app.js中编写Vue代码,所以要在app.js前面引入4.数据渲染4.1当任务列表(items)没有数据时,#main和#footer标识的标签应该被..

    2025年10月29日
    5
  • Tomcat命令

    Tomcat命令

    2022年4月3日
    78
  • android调用so文件_android加载大图

    android调用so文件_android加载大图原文地址点击打开链接一、前言Android中有时候为了效率以及平台开发库的支持,难免会用到NDK开发,那么都会产生一个so文件,通过native方法进行调用,开发和调用步骤很简单,这里就不多说了,本文主要来介绍,我们在使用so的时候总是会出现一些常见的问题,而现在插件化开发也很普遍了,有时候插件中也会包含一些so文件,需要加载,这时候也会出现一些问题。本文就来详细总

    2026年1月22日
    5
  • 基于Element-UI的组件改造的树形选择器(树形下拉框)

    基于Element-UI的组件改造的树形选择器(树形下拉框)前言 由于做项目需要一个树形选择器 项目用的也是 element ui 框架 然而它自带的选择器组件没有树形选项 又不想引入其他的框架组件 于是自己利用 el select 和 el tree 改造了一个 感觉还挺好用的 就封装成了一个组件 如下图 element ui 的 el select 组件的选项只能是列表形式 改造后的树形选择器 简介 此树形选择器组件是基于 elment ui 框架的 e

    2026年3月20日
    2

发表回复

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

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