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

急救??

Posted by harith at 2009-04-13 19:31:40 on Problem 1089
Source Code

Problem: 1089  User: harith 
Memory: N/A  Time: N/A 
Language: C++  Result: Memory Limit Exceeded 
那位大侠帮帮忙??
Source Code 
#include<iostream>
using namespace std;
int temp;
template<class T>class list;
template<class T>
class node
{
      friend class list<T>;
      private:
              T data1;
              T data2;
              node<T> *next;
};
template <class T>
class list
{
      public:
             list(){first=0;}
            void input (int n);   
            void output(); 
            void bin_sort(int m);
			void haibao();
      private:
      node<T> *first;
};
template <class T>
void list<T>::input(int n)
{
     int i;
     node<int> *np,*p,*q;
	 node<int> *h;
	 int temp1=0;
     for(i=0;i<n;i++)
     {
         np=new node<int>;
		cin>>np->data1>>np->data2;
		 if(np->data1>=temp1)temp1=np->data1;
		 if(first==0)
		 {
			 first=np;
			 h=np;
			 h->next=0;
		 }
		 else
		 {
			 h->next=np;
			 np->next=0;
			 h=np;
		 }
	 }
	 temp=temp1;
}

template<class T>
void list<T>::output()
{
  node<int> *h;
  for(h=first;h;h=h->next)
  {
	  cout<<h->data1<<" "<<h->data2;
      cout<<endl;
  }
}   
template<class T>
void list<T>::bin_sort(int m)
{
	int b;
	node<int>**bottom,**top;
	bottom=new node<int> *[m+1];
	top=new node<int>*[m+1];
	for(b=0;b<=m;b++)
		bottom[b]=0;
	for(;first;first=first->next)
	{
		b=first->data1;
		if(bottom[b])
		{
			top[b]->next=first;
		    top[b]=first;
		}
		else
			bottom[b]=top[b]=first;
	}
	node<int>*p=0;
	for(b=0;b<=m;b++)
		if(bottom[b])
		{
			if(p)p->next=bottom[b];
			else first=bottom[b];
			p=top[b];
		}
		if(p)p->next=0;
		delete[]bottom;
		delete[]top;
}
template<class T>
void list<T>::haibao()
{
	node<int>*h,*p,*q;
	h=first;
	p=h->next;
	while(p!=0)
	{
		if(p->data1<=h->data2)
		{
			if(p->data2>=h->data2)
			{
				h->data2=p->data2;
				if(h->data1<=p->data1) ;
				else if(h->data1>p->data1) h->data1=p->data1;
				q=p;
				h->next=p->next;
		    	p=p->next;
			    delete q;
			}
			else
			{
				if(h->data1<=p->data1) ;
				else if(h->data1>p->data1) h->data1=p->data1;
				q=p;
				h->next=p->next;
		    	p=p->next;
			    delete q;
			}
		
		}
		else
		{
			h=h->next;
			p=p->next;
		}
	}
}
			
  int main()
  { 
	  int n;
	  list<int> ad;
	  cin>>n;
	  ad.input(n);
     	  ad.bin_sort(temp);
	  ad.haibao();
	  ad.output();
	  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