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 |
哪位大牛帮忙看下我的对哪有问题啊?#include<stdio.h> #define MAX 200000 struct node { int fval; int num; int lval; }a[MAX]; int pos; void insert(int qnum,int first_val,int current_val) { int i=pos; while(i>=2 && a[i/2].lval>=current_val ) { if(a[i/2].lval==current_val) { if(a[i/2].num>qnum) { a[i].fval=a[i/2].fval; a[i].lval=a[i/2].lval; a[i].num=a[i/2].num; } } else { a[i].fval=a[i/2].fval; a[i].lval=a[i/2].lval; a[i].num=a[i/2].num; } i=i/2; } a[i].fval=first_val; a[i].num=qnum; a[i].lval=current_val;//printf("%d ",a[i].lval); pos++; } int deletemin() { int min=a[1].num; int ll_num=a[1].num; int ll_fval=a[1].fval; int ll_lval=a[1].lval; int l_num=a[pos-1].num; int l_fval=a[pos-1].fval; int l_lval=a[pos-1].lval; int i; int child; for(i=1;i*2<pos;i=child) { child=2*i; if(a[child+1].lval==a[child].lval &&(child+1!=pos) ) { if(a[child+1].num<a[child].num) child++; } else if(a[child+1].lval<a[child].lval &&(child+1!=pos)) child++; if(l_lval<a[child].lval) break; else { a[i].lval=a[child].lval; a[i].fval=a[child].fval; a[i].num=a[child].num; } } a[i].lval=l_lval; a[i].fval=l_fval; a[i].num=l_num; pos--; insert(ll_num,ll_fval,ll_fval+ll_lval); return min; } int main() { freopen("in.txt","r",stdin); pos=1; char b[100]; int qnu,va; while( scanf("%s",b) && b[0]!='#') { scanf("%d %d",&qnu,&va); insert(qnu,va,va); } int k; scanf("%d",&k); int num=0; int i; while(num<k) { printf("%d\n",deletemin()); //for(i=1;i<=2;i++) //printf("tt%d %d %dtt",a[i].num,a[i].fval,a[i].lval); num++; } while(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