Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

本地测试正确,但是显示runtime error

Posted by tanlan at 2017-09-16 17:50:33 on Problem 1009
#include<iostream>
#include<math.h>
#include <memory.h>
using namespace std;
int OutPx     =0;
int OutPxLenth=0;
void SetValue(int px);
void SetValue(int px)
{
	if (px==OutPx)
	{
		OutPxLenth++;
	}
	else
	{
		cout << OutPx << ' ' << OutPxLenth << endl;
		OutPx = px;
		OutPxLenth = 1;
	}
}
int main()
{
	int colNum;
	cin >> colNum;
	while (colNum != 0)
	{
		cout << colNum << endl;
		int RLEPx;
		long RLELength;
		int* RLERol1 = new int[colNum];
		int* RLERol2 = new int[colNum];
		int* RLERolCur = new int[colNum];
		int CulColIndex = 0;//列索引
		int CurRowIndex = 0;
		cin >> RLEPx >> RLELength;
		while (RLEPx != 0 || RLELength != 0)
		{
			for (int i = 0; i < RLELength; i++)
			{
				RLERolCur[CulColIndex] = RLEPx;
				CulColIndex++;
				//如果输入行输入结束,则换行并计算倒数第二行的值 有三种情况
				//第一行结束不计算,第二行结束,计算第一行 --下左右的的差
				//第三行结束,计算第二行 --上下左右的差
				if (CulColIndex == colNum)
				{
					if (CurRowIndex == 0)
					{
					}
					else if (CurRowIndex == 1)
					{
						int a = abs(RLERol2[0] - RLERol2[1]);//右
						int a2 = abs(RLERol2[0] - RLERolCur[0]);//下
						a = a > a2 ? a : a2;
						a2 = abs(RLERol2[0] - RLERolCur[1]);//下右
						a = a > a2 ? a : a2;
						OutPx = a;
						OutPxLenth = 1;
						for (int rol2index = 1; rol2index < colNum - 1; rol2index++)
						{
							a = abs(RLERol2[rol2index] - RLERol2[rol2index + 1]);//右
							a2 = abs(RLERol2[rol2index] - RLERol2[rol2index - 1]);//左
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[rol2index] - RLERolCur[rol2index - 1]);//下左
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[rol2index] - RLERolCur[rol2index]);//下
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[rol2index] - RLERolCur[rol2index + 1]);//下右
							a = a > a2 ? a : a2;
							SetValue(a);
						}
						a = abs(RLERol2[colNum - 1] - RLERol2[colNum - 2]);//左
						a2 = abs(RLERol2[colNum - 1] - RLERolCur[colNum - 1]);//下
						a = a > a2 ? a : a2;
						a2 = abs(RLERol2[colNum - 1] - RLERolCur[colNum - 2]);//下左
						a = a > a2 ? a : a2;
						SetValue(a);
					}
					else
					{
						if (i >= 3 * colNum)
						{
							int skipNum = ((RLELength-i) / colNum)*colNum;
							i += skipNum;
							if (0 == OutPx)
							{
								OutPxLenth += skipNum;
							}
							else
							{
								cout << OutPx << ' ' << OutPxLenth << endl;
								OutPx = 0;
								OutPxLenth = skipNum;
							}
						}
						else
						{
							int a = abs(RLERol2[0] - RLERol2[1]);//右
							int a2 = abs(RLERol2[0] - RLERolCur[0]);//下
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[0] - RLERolCur[1]);//下右
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[0] - RLERol1[0]);//上
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[0] - RLERol1[1]);//上右
							a = a > a2 ? a : a2;
							SetValue(a);
							for (int rol2index = 1; rol2index < colNum - 1; rol2index++)
							{
								a = abs(RLERol2[rol2index] - RLERol2[rol2index + 1]);//右
								a2 = abs(RLERol2[rol2index] - RLERol2[rol2index - 1]);//左
								a = a > a2 ? a : a2;
								a2 = abs(RLERol2[rol2index] - RLERolCur[rol2index - 1]);//下左
								a = a > a2 ? a : a2;
								a2 = abs(RLERol2[rol2index] - RLERolCur[rol2index]);//下
								a = a > a2 ? a : a2;
								a2 = abs(RLERol2[rol2index] - RLERolCur[rol2index + 1]);//下右
								a = a > a2 ? a : a2;
								a2 = abs(RLERol2[rol2index] - RLERol1[rol2index - 1]);//上左
								a = a > a2 ? a : a2;
								a2 = abs(RLERol2[rol2index] - RLERol1[rol2index]);//上
								a = a > a2 ? a : a2;
								a2 = abs(RLERol2[rol2index] - RLERol1[rol2index + 1]);//上右
								a = a > a2 ? a : a2;
								SetValue(a);
							}
							a = abs(RLERol2[colNum - 1] - RLERol2[colNum - 2]);//左
							a2 = abs(RLERol2[colNum - 1] - RLERolCur[colNum - 1]);//下
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[colNum - 1] - RLERolCur[colNum - 2]);//下左
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[colNum - 1] - RLERol1[colNum - 1]);//上
							a = a > a2 ? a : a2;
							a2 = abs(RLERol2[colNum - 1] - RLERol1[colNum - 2]);//上左
							a = a > a2 ? a : a2;
							SetValue(a);
						}
					}
					//换行
					memcpy(RLERol1, RLERol2, colNum * sizeof(int));
					memcpy(RLERol2, RLERolCur, colNum * sizeof(int));
					//RLERol1 = RLERol2;
					//RLERol2 = RLERolCur;
					CulColIndex = 0;
					CurRowIndex++;
				}
			}
			cin >> RLEPx >> RLELength;
		}
		//最后一列有两种情况,1空行 CurRowIndex=0 
		if (CulColIndex == 0 && CurRowIndex == 0)
		{
			int a = abs(RLERol2[0] - RLERol2[1]);//右
			int a2;
			SetValue(a);
			for (int rol2index = 1; rol2index < colNum - 1; rol2index++)
			{
				a = abs(RLERol2[rol2index] - RLERol2[rol2index + 1]);//右
				a2 = abs(RLERol2[rol2index] - RLERol2[rol2index - 1]);//左
				a = a > a2 ? a : a2;
				SetValue(a);
			}
			if (colNum > 1)
			{
				a = abs(RLERol2[colNum - 1] - RLERol2[colNum - 2]);//左
				SetValue(a);
			}
		}
		else if (CulColIndex == 0 && CurRowIndex > 0)
		{
			int a = abs(RLERol2[0] - RLERol2[1]);//右
			int a2 = abs(RLERol2[0] - RLERol1[0]);//上
			a = a > a2 ? a : a2;
			a2 = abs(RLERol2[0] - RLERol1[1]);//上右
			a = a > a2 ? a : a2;
			SetValue(a);
			for (int rol2index = 1; rol2index < colNum - 1; rol2index++)
			{
				a = abs(RLERol2[rol2index] - RLERol2[rol2index + 1]);//右
				a2 = abs(RLERol2[rol2index] - RLERol2[rol2index - 1]);//左
				a = a > a2 ? a : a2;
				a2 = abs(RLERol2[rol2index] - RLERol1[rol2index - 1]);//上左
				a = a > a2 ? a : a2;
				a2 = abs(RLERol2[rol2index] - RLERol1[rol2index]);//上
				a = a > a2 ? a : a2;
				a2 = abs(RLERol2[rol2index] - RLERol1[rol2index + 1]);//上右
				a = a > a2 ? a : a2;
				SetValue(a);
			}
			if (colNum > 1)
			{
				a = abs(RLERol2[colNum - 1] - RLERol2[colNum - 2]);//左
				a2 = abs(RLERol2[colNum - 1] - RLERol1[colNum - 1]);//上
				a = a > a2 ? a : a2;
				a2 = abs(RLERol2[colNum - 1] - RLERol1[colNum - 2]);//上左
				a = a > a2 ? a : a2;
				SetValue(a);
			}
		}
		else
		{
			int a = abs(RLERolCur[0] - RLERolCur[1]);//右
			int a2 = abs(RLERolCur[0] - RLERol2[0]);//上
			a = a > a2 ? a : a2;
			a2 = abs(RLERolCur[0] - RLERol2[1]);//上右
			a = a > a2 ? a : a2;
			SetValue(a);
			for (int rol2index = 1; rol2index < CulColIndex; rol2index++)
			{
				a = abs(RLERolCur[rol2index] - RLERolCur[rol2index + 1]);//右
				a2 = abs(RLERolCur[rol2index] - RLERolCur[rol2index - 1]);//左
				a = a > a2 ? a : a2;
				a2 = abs(RLERolCur[rol2index] - RLERol2[rol2index - 1]);//上左
				a = a > a2 ? a : a2;
				a2 = abs(RLERolCur[rol2index] - RLERol2[rol2index]);//上
				a = a > a2 ? a : a2;
				a2 = abs(RLERolCur[rol2index] - RLERol2[rol2index + 1]);//上右
				a = a > a2 ? a : a2;
				SetValue(a);
			}
			if (CulColIndex > 0)
			{
				a = abs(RLERolCur[CulColIndex] - RLERolCur[CulColIndex - 1]);//左
				a2 = abs(RLERolCur[CulColIndex] - RLERol2[CulColIndex - 0]);//上
				a = a > a2 ? a : a2;
				a2 = abs(RLERolCur[CulColIndex] - RLERol2[CulColIndex - 1]);//上左
				a = a > a2 ? a : a2;
				SetValue(a);
			}
		}
		cout << OutPx << ' ' << OutPxLenth << endl;
		OutPx = 0;
		OutPxLenth = 0;
		cin >> colNum;
	}
	return 0;
}


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator