| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:那位老大给看看(严重超时),^-^In Reply To:那位老大给看看(严重超时),^-^ Posted by:liuyao8885 at 2006-02-05 11:31:44 > #include <iostream>
> #include <string>
>
> using namespace std;
>
> bool findNext();
>
> int k;
> int m;
> int current;
> basic_string<int> executeStatus; // 1 indicates executed, 0 not
>
> int main()
> {
> cin >> k;
>
> while (k != 0)
> {
> int i;
> bool flag;
>
> executeStatus.resize(k * 2);
>
> for (m = k + 1; ; m++)
> {
> current = 0; // initial position
> flag = true;
>
> for (i = 0; i < 2 * k; i++)
> {
> executeStatus[i] = 0;
> }
>
> for (i = 0; i < k; i++)
> {
> if (!findNext())
> {
> flag = false;
> break;
> }
> }
>
> if (flag == true)
> {
> break;
> }
> }
>
> /*
> * output result and read the next k
> */
> cout << m << endl;
> cin >> k;
> }
>
> return 0;
> }
>
> bool findNext()
> {
> int i;
>
> for (i = 0; i < m;)
> {
> if (executeStatus[current] == 0)
> {
> i++;
> if (i != m)
> {
> current = (current + 1) % (2 * k);
> }
> }
> else
> {
> current = (current + 1) % (2 * k);
> }
> }
>
>
> if (current < k)
> {
> return false;
> }
> else
> {
> executeStatus[current] = 1;
>
> /*
> * position to the next guy
> */
> for (i = 0; i < 1;)
> {
> current = (current + 1) % (2 * k);
> if (executeStatus[current] == 0)
> {
> i++;
> }
> }
> return true;
> }
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator