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

Re:1009题,总是runtime error,高手大牛们都过来帮看看是什么原因啊,谢谢啦

Posted by NSL1992 at 2011-07-18 13:22:05
In Reply To:1009题,总是runtime error,高手大牛们都过来帮看看是什么原因啊,谢谢啦 Posted by:clinton at 2008-06-01 16:32:59
> #include <iostream>
> 
> #define NUM 80000
> #define MAXX 100000
> using namespace std;
> 
> long data_pos[NUM][3];
> int data_value[NUM];
> 
> long res_num[MAXX];
> int res_value[MAXX];
> int pair_num = 0;
> int len = 0;
> int res_len = 0;
> 
> void single_process(int i1, long i2);
> int main()
> {
> 	int value; 
> 	long num;
> 	long pos = 0;
> 	while(cin>>len)
> 	{
> 		pos = 0;
> 		res_len = 0;
> 		pair_num = 0;
> 		if(len == 0) 
> 			break;
> 		while(cin>>value>>num)
> 		{
> 			if(value == 0 && num ==0)
> 				break;
> 			////////数据输入///////////
> 			data_pos[pair_num][0] = pos;
> 			pos = pos + num;
> 			data_pos[pair_num][1] = pos - 1;
> 			data_pos[pair_num][2] = num;
> 			data_value[pair_num] = value;
> 			pair_num ++;
> 		}
> 		//cout<<"last:"<<data_pos[pair_num-1][1]<<endl;
> 		////////数据处理///////////
> 		long cur_pos = 0;
> 		for(int i1 = 0; i1 < pair_num; i1++)
> 		{
> 			//无法简化
> 			if(data_pos[i1][2] < (4 * len - 1))
> 			{
> 				//逐个处理
> 				for(long i2 = data_pos[i1][0]; i2 <= data_pos[i1][1]; i2++)
> 				{
> 					single_process(i1, i2);
> 					cur_pos ++;
> 				}
> 			}
> 			//可以集团简化处理
> 			else
> 			{
> 				//先处理首部
> 				long pos11 = long(long(cur_pos / len) + 2);
> 				long stage1 = long(pos11 * len - 1);
> 
> 				for(long i = data_pos[i1][0]; i <= stage1; i++)
> 				{
> 					single_process(i1, i);
> 					//cur_pos ++;
> 				}
> 				//处理中部
> 				long stage2 = long((data_pos[i1][1]/len - 1)*len -1);
> 				res_num[res_len] = stage2 - stage1;
> 		    	res_value[res_len] = 0;
> 				res_len ++;
> 				//cur_pos += data_pos[i1][]
> 				//处理尾部
> 
> 				long stage3 = data_pos[i1][1];
> 				for(long j = stage2 + 1; j <= stage3; j++)
> 					single_process(i1, j);
> 				cur_pos += data_pos[i1][2];
> 
> 			}
> 		}
> 
> 		/////合并处理
> 		int temp_value = res_value[0];
> 		long temp_num = 0;
> 		cout<<len<<endl;
> 		//cout<<"res_len:"<<res_len<<endl;
> 		for(int count = 0; count < res_len; count++)
> 		{
> 			if(res_value[count] == temp_value)
> 			{
> 				temp_num += res_num[count];
> 			}
> 			else
> 			{
> 				cout<<temp_value<<" "<<temp_num<<endl;
> 				temp_value = res_value[count];
> 				temp_num = 1;
> 			}
> 		}
> 		cout<<temp_value<<" "<<temp_num<<endl;
> 		cout<<"0"<<" "<<"0"<<endl;
> 	}
> 	cout<<"0"<<endl;
> 	return 0;
> }
> 
> void single_process(int i1, long i2)
> {
> 	//pos1
> 	int max = 0;
> 	long pos1 = i2 - len - 1;
> 	int temppos;
> 	int val;
> 	if(pos1 >= 0 && i2 % len != 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][0] > pos1)
> 			temppos --;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	//cout<<"f1"<<endl;
> 	//cout<<"pos1:"<<max<<endl;
> 	//pos2
> 	pos1 = i2 - len;
> 	if(pos1 >= 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][0] > pos1)
> 			temppos --;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	//cout<<"f2"<<endl;
> 	//cout<<"pos2:"<<max<<endl;
> 	//pos3
> 	pos1 = i2 - len + 1;
> 	if(pos1 >= 0 && (i2 + 1) % len != 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][0] > pos1)
> 			temppos --;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	//cout<<"f3"<<endl;
> 	//cout<<"pos3:"<<max<<endl;
> 	//pos4
> 	pos1 = i2 - 1;
> 	if(pos1 >= 0 && i2 % len != 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][0] > pos1)
> 			temppos --;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	//cout<<"f4"<<endl;
> 	//cout<<"pos4:"<<max<<endl;
> 	//pos5
> 	pos1 = i2 + 1;
> 	if(pos1 <= data_pos[pair_num - 1][1] && (i2 + 1) % len != 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][1] < pos1)
> 			temppos ++;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	//cout<<"pos5:"<<max<<endl;
> 	//pos6
> 	//cout<<"f5"<<endl;
> 	pos1 = i2 + len -1;
> 	if(pos1 <= data_pos[pair_num - 1][1] && i2 % len != 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][1] < pos1)
> 			temppos ++;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	//cout<<"pos6:"<<max<<endl;
> 	//pos7
> 	//cout<<"f6"<<endl;
> 	pos1 = i2 + len;
> 	if(pos1 <= data_pos[pair_num - 1][1])
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][1] < pos1)
> 			temppos ++;
> 		//if(res_len == 31)cout<<"datavale:"<<pos1<<endl;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	pos1 = i2 + len + 1;
> 	if(pos1 <= data_pos[pair_num - 1][1] && (i2 + 1) % len != 0)
> 	{
> 		temppos = i1;
> 		while(data_pos[temppos][1] < pos1)
> 			temppos ++;
> 		val = abs(data_value[temppos] - data_value[i1]);
> 		if(val > max) max = val;
> 	}
> 	res_num[res_len] = 1;
> 	res_value[res_len] = max;
> 	res_len ++;
> }
> 

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