比赛 20110916 评测结果 AWEEEEEEEE
题目名称 盛大的 Farm-off 最终得分 10
用户昵称 Citron酱 运行时间 0.741 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2011-09-16 21:05:30
显示代码纯文本
#include <fstream>

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

const long MAXn=500000*3;
const short SortP=20;

struct cows
{
	long long w, u;
}*s;
long n,m;

void Input();
inline bool Compare(const cows, const cows);
inline void Swap(cows&,cows&);
void Qsort(const long, const long);
void Output();

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

void Input()
{
	std::ifstream fin(I_F);
	long a,b,c,d,e,f,g,h;
	fin>>n>>a>>b>>c>>d>>e>>f>>g>>h>>m;
	fin.close();
	n*=3;
	s=new cows[n];
	for (long i=0; i<n; i++)
		s[i].u=(a*i*i*i*i*i+b*i*i+c)%d,
		s[i].w=(e*i*i*i*i*i+f*i*i*i+g)%h;

}

inline bool Compare(const cows a, const cows b)
{
	return ((a.w<b.w)||((a.w==b.w)&&(a.u>b.u)));
}
inline void Swap(cows &a, cows &b)
{
	cows t=a;
	a=b;
	b=t;
}

void Qsort(const long l, const long r)
{
	if (r-l>SortP)
	{
		long i=l, j=r;
		cows x=s[(r+l)/2];
		do
		{
			while (Compare(s[i],x)) i++;
			while (Compare(x,s[j])) j--;
			if (i<=j)
				Swap(s[i++],s[j--]);
		} while (i<j);
		if (i<r) Qsort(i,r);
		if (l<j) Qsort(l,j);
	}
	else
	{
		bool flag;
		for (short i=l; i<r; i++)
		{
			flag=true;
			for (short j=r; j>i; j--)
				if (!Compare(s[j-1],s[j]))
					Swap(s[j-1],s[j]),
					flag=false;
			if (flag)
				break;
		}
	}
}

void Output()
{
	long long ans=0;
	for (long i=n-1; i>=n*2/3; i--)
		ans=(ans+s[i].u)%m;
	std::ofstream fout(O_F);
	fout<<ans<<std::endl;
	fout.close();
}