| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位大牛能看一下我的这个程序为什么会Runtime Error !!! 感激不尽 !!!!!#include<stdio.h>
#define N 100010
struct NODE{
int b,e,l,r;
int number, last ;
} node[N*4+1] ;
int len,data[N];
int build(int a,int b)
{
int temp=len , mid=(a+b)/2 ;
node[temp].b=a , node[temp].e=b ;
len++;
if(a==b)
{
node[temp].number=1;
node[temp].last=1;
// node[temp].l=node[temp].r
return temp;
}
node[temp].l=build(a,mid);
node[temp].r=build(mid+1,b);
int left_c=node[temp].l , right_c=node[temp].r , p , lcount =0 ,rcount=0 , rec , max=0 ;
rec=data[mid];
p=mid;
while(p>=a&&data[p]==rec) { p-- , lcount++; }
node[left_c].last=lcount;
rec=data[mid+1];
p=mid+1;
while(p<=b&&data[p]==rec) { p++ , rcount++; }
node[right_c].last=rcount;
if(data[mid]==data[mid+1])
{
max=lcount+rcount;
}
if(node[left_c].number>max) max=node[left_c].number;
if(node[right_c].number>max) max=node[right_c].number;
node[temp].number=max;
return temp;
}
int query(int index , int a , int b)
{
int begin=node[index].b , end=node[index].e , mid = (begin+end) / 2 ;
if(a==begin && b==end)
return node[index].number;
if(a>mid) return query( node[index].r , a , b);
if(b<mid+1) return query( node[index].l , a , b);
int temp1,temp2,max;
if(node[index].l>0) temp1 = query( node[index].l , a , mid);
if(node[index].r>0) temp2 = query( node[index].r , mid+1, b);
max = temp1>temp2 ? temp1:temp2;
if(data[mid]!=data[mid+1])
return max;
temp1= node[node[index].l].last > (mid-a+1) ? (mid-a+1) : node[node[index].l].last ;
temp2= node[node[index].r].last > (b-mid) ? (b-mid) : node[node[index].r].last ;
if(max<temp1+temp2) max=temp1+temp2;
return max;
}
int main()
{
int i,n,q,a,b;
while(scanf("%d",&n)==1 && n)
{
scanf("%d",&q);
for(i=0;i<n;i++) scanf("%d",&data[i]);
build(0,n-1);
while(q--)
{
scanf("%d%d",&a,&b);
printf("%d\n", query(0,a-1,b-1));
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator