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