记录编号 |
44579 |
评测结果 |
AAAAAAAAAT |
题目名称 |
[长郡中学2004] 慈善的约瑟夫 |
最终得分 |
90 |
用户昵称 |
Cloud |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
1.908 s |
提交时间 |
2012-10-19 09:59:42 |
内存使用 |
3.15 MiB |
显示代码纯文本
#include<fstream>
#include<set>
#include<deque>
using namespace std;
int main(void)
{
ifstream fin("jose.in");
ofstream fout("jose.out");
int n,m=0;
deque<int> dq;
deque<int>::iterator p;
set<int> s;
set<int>::iterator q,j;
int i=0;
fin>>n;
for(i=1;i<=n;i++)
dq.push_back(i);
while(s.size()!=1)
{
for(i=0,p=dq.begin();dq.size()!=1;i++)
{
if(p==dq.end())
p=dq.begin();
if(i%2)
{
s.insert(*p);
p=dq.erase(p);
}
else
p++;
}
p=dq.begin();
q=s.upper_bound(*p);
if(q==s.end())
{
m+=2*(s.size()+1);
break;
}
for(;q!=s.end();q++)
{
m++;
j=q,q--;
s.erase(j);
}
if(s.size()==1)
break;
s.insert(*p),dq.pop_back();
for(q=s.begin();q!=s.end();q++)
dq.push_back(*q);
s.clear();
}
fout<<m;
fin.close();
fout.close();
return 0;
}