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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 根据IP定位用户所在城市信息

    根据IP定位用户所在城市信息

    2021年10月17日
  • Override ListView getAdapter造成的后果

    Override ListView getAdapter造成的后果

    2021年11月23日
  • git 命令怎么删除本地分支「建议收藏」

    git 命令怎么删除本地分支「建议收藏」查看所有分支查看项目的分支:包括本地和远程gitbranch-a删除本地分支gitbranch-dgitbranch-d分支名-d是–delete的缩写,在使用–delete删除分支时,该分支必须完全和它的上游分支merge完成。如果没有完成merge就会报下面的gitbranch-dSP_4.3.0_previewerror:Thebranch’SP_4.3.0_preview’isnotfullymerged.If

    2022年10月17日
  • Android 绑定服务 bindService[通俗易懂]

    Android 绑定服务 bindService[通俗易懂]绑定服务是客户端–服务器接口中的服务器。组件(如activity)和服务进行绑定后,可以发送请求、接收响应、执行进程间通信(IPC)。不会无限期在后台运行。要提供服务绑定,必须实现onBind()回调方法,该方法返回的IBinder对象定义了客户端用来与服务进行交互的编程接口。客户端可以通过调用bindService()绑定到服务。调用时,必须提供ServiceConnection的实现,后者会…

    2022年6月10日
  • 查看idea是否激活成功[最新免费获取]

    (查看idea是否激活成功)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~2…

    2022年3月29日
  • 怎么设置pycharm环境_怎么设置环境光影响物体

    怎么设置pycharm环境_怎么设置环境光影响物体恍惚大半年过去了,我也大半年没接触Pycharm找个软件了,今天由于项目需要,重新打开恍如一个陌生软件。折腾几分钟也渐渐回忆起那些熟悉的操作,但这几分钟以及在这几分钟前的对于陌生畏惧,以后像尽力避免罢了。我曾在不舍昼夜在Pycharm前敲打代码,似乎也成为了许久的过往,实际只是半年多而已…牢骚结束,言归正传。虚拟环境搭建搭建一个虚拟环境是件十分麻烦的事情,再娴熟的人也要花费个把小时,因为有一大堆包需要下载。点击File—>CreateProject,选择新环境,按照如下目录搭建虚拟环境,不过

    2022年8月27日

发表回复

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

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