Hanafuda Shuffle

mike20090518


http://www.acm-japan.org/past-icpc/domestic2004/A.jp/A.html
cardをdeleteしようとするとエラーが出るのでとりあえず放置です.
そういえばプログラミングコンテストって,ファイル出力しなかったっけ?

#include <stdio.h>

int main(void)
{
	//
	//	宣言
	//
	int out[256];		//	答え
	int oi = 0;			//	答え配列の添え字

	while(1)
	{
		//
		//	入力
		//
		int n, r;
		scanf("%d%d", &n, &r);
		if(n == 0 && r == 0)
			break;

		//	山の初期化
		int *card = new int[n];
		for(int i = 1; i <= n; i++)
		{
			card[i-1] = n - (i-1);
		}

		//
		//	シャッフル
		//
		int p, c;
		int *tmp = new int [n];
		for(int i = 0; i < r; i++)
		{
			scanf("%d%d", &p, &c);

			for(int j = 0; j < c; j++)
			{
				tmp[j] = card[p-1+j];
			}
			for(int j = p-1; j > 0; j--)
			{
				card[c+j] = card[j];
			}
			for(int j = 0; j < c; j++)
			{
				card[j] = tmp[j];
			}
		}
		out[oi++] = card[0];
		//	メモリの開放
		delete [] tmp;
	}

	//
	//	出力
	//
	for(int i = 0; i < oi; i++)
	{
		printf("%d\n", out[i]);
	}

	return 0;
}