hdu1754 i hate it 的错误代码

来源:互联网 发布:商家给淘宝什么发票 编辑:程序博客网 时间:2024/04/29 13:02

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754

 

 

       Runtime Error

(ACCESS_VIOLATION)

 哪出错了- -

 

//hdu1754建树creat 修改modify 查找search  #include<iostream>using namespace std;#define Max 400100int MAX;typedef struct node{int l,r,max;node *left,*right;}Node,*Tree;int nt=1;node tree[600010];inline int max(int a,int b) {return a>b?a:b;}Tree Creat(int l,int r){Tree tmp=&tree[nt++];tmp->max=0;tmp->l=l; tmp->r=r;if(l==r)tmp->left=tmp->right=NULL;else{int mid=(l+r)/2;tmp->left=Creat(l,mid);tmp->right=Creat(mid+1,r);}return tmp;}void Modify(Tree tmp,int l,int x)      //l:位置    x:覆盖值{if(tmp->l==tmp->r){tmp->max=x;return;}int mid=(tmp->l+tmp->r)/2;if(l<=mid)Modify(tmp->left,l,x);elseModify(tmp->right,l,x);tmp->max=max(tmp->left->max,tmp->right->max);}void Search(Tree tmp,int l,int r)     //在树tmp搜索线段l_r{if(tmp->l==l&&tmp->r==r){if(MAX<tmp->max)MAX=tmp->max;return;}int mid=(tmp->l+tmp->r)/2;if(mid<l)Search(tmp->right,l,r);else if(r<=mid) Search(tmp->left,l,r); else { Search(tmp->left,l,mid); Search(tmp->right,mid+1,r);  }}int main(){char t[2];int N,M,A,B,i,j,x;while( scanf("%d%d",&N,&M)!=EOF ){Tree T=Creat(1,N);for(i=1;i<=N;i++){scanf("%d",&x);Modify(T,i,x);}for(i=1;i<=M;i++){getchar();scanf("%s%d%d",t,&A,&B);if(t[0]=='Q')                     // 询问 Search{MAX=0;Search(T,A,B);              //A~B中的最大值printf("%d\n",MAX);}else                           // 更新 Modify Modify(T,A,B);             //把ID为A的学生的成绩更改为B}}return 0;}


 

 

 

 

原创粉丝点击