比赛 |
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();
}