AOJ 5013 何度してもTime Limit Exceededになります

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Titan

AOJ 5013 何度してもTime Limit Exceededになります

#1

投稿記事 by Titan » 13年前

問題です
JOI公式サイトのサンプルデータも1秒以内に処理を終えたのになぜかAOJ通りません。
どこがおかしいのでしょうか?ご指導よろしくお願いいたします。

コード:

#include <iostream>
#include <algorithm>
#include <deque>

#define rep(i,n) for(i=0;i<n;i++)
#define rept(i,n) for(int i=0;i<n;i++)

using namespace std;

void view(deque<int> d){
	deque<int>::iterator it=d.begin();
	for(;it!=d.end();it++){
		cout<<*it<<endl;
	}
}

int main(){
	
	int i, j, n, m;
	while(cin>>n>>m,n,m){
		deque<int> temp, dat, temp2;
		dat.clear();
		for(i=1;i<=2*n;i++)
			dat.push_back(i);
		rept(k,m){
			cin>>i;
			temp.clear();
			temp2.clear();
			if(i!=0){
				rep(j,i){
					if(!dat.empty()){
						temp.push_back(dat.front());
						dat.pop_front();
					}
				}
				while(!temp.empty()){
					dat.push_back(temp.front());
					temp.pop_front();
				}
			}else if(!i){
				rep(j,n){
					if(!dat.empty()){
						temp.push_back(dat.front());
						dat.pop_front();
					}
				}
				rep(j,n){
					if(!dat.empty()){
						temp2.push_back(dat.front());
						dat.pop_front();
					}
				}
				rep(j,2*n){
					if(j%2){
						if(!temp2.empty()){
							dat.push_back(temp2.front());
							temp2.pop_front();
						}
					}else{
						if(!temp.empty()){
							dat.push_back(temp.front());
							temp.pop_front();
						}
					}
				}
			}
		}
		view(dat);
	}
	return 0;
}

アバター
a5ua
記事: 199
登録日時: 14年前

Re: AOJ 5013 何度してもTime Limit Exceededになります

#2

投稿記事 by a5ua » 13年前

n, m は一度しか入力しないので、全体を while で囲む必要はありません。

Titan

Re: AOJ 5013 何度してもTime Limit Exceededになります

#3

投稿記事 by Titan » 13年前

ありがとうございます
通りました。

ずっと0 0入力で終了するプログラムばかり行っていたのでそのままで行っていました。

ありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る