比赛 20101101 评测结果 AWWWWWWWWW
题目名称 奇怪的监狱 最终得分 10
用户昵称 Citron酱 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-01 21:07:33
显示代码纯文本
#include <fstream>
#include <cstdlib>

#define I_F "prison.in"
#define O_F "prison.out"

using namespace std;

int s[100];
int p,q;
long ans;

void Input();
void Swap(int &a, int &b);
void Qsort(int l, int r);
void Search();
void Output();

int main()
{
	Input();
	Qsort(0,q-1);
	Search();
	Output();
	return 0;
}

void Input()
{
	int i;
	ifstream fin(I_F);
	fin>>p>>q;
	for (i=0; i<q; fin>>s[i++]);
	fin.close();
}

void Swap(int &a, int &b)
{
	int t=a;
	a=b;
	b=t;
}

void Qsort(int l, int r)
{
	int x=s[l+rand()%(r-l+1)];
	int i=l, j=r;
	do
	{
		while (s[i]<x) 
			i++;
		while (s[j]>x)
			j--;
		if (i<=j)
			swap(s[i++],s[j--]);
	} while (i<j);
	if (i<r)
		Qsort(i,r);
	if (l<j)
		Qsort(l,j);
}

void Search()
{
	int la=1,ra=p,lb=0,rb=q-1;
	int i;
	for (i=1; i<q; i++)
	{
		ans+=ra-la;
		if ((s[lb]-la)>(ra-s[rb]))
			la=s[lb++]+1;
		else
			ra=s[rb--]-1;
	}
	ans+=ra-la;
}

void Output()
{
	ofstream fout(O_F);
	fout<<ans<<'\n';
	fout.close();
}