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 |
pku3214总是wa.那位大牛能给我程序?谢谢!以下是我的程序: #include<cstdio> #define maxn 1048600 #define none 2000000000 int D[maxn],V[maxn],N,upd,ans=0,nn=0; void solve(int); int find(int); int main(){ scanf("%d",&N); int i,k,r; nn=1; for (i=1;i<=N;i++) nn*=2; N=0; --nn; while (1){ if (scanf("%d",&r)==EOF) break; if (N+1>nn) break; D[++N]=r; } nn=0; upd=0; solve(1); D[0]=-none; for (i=1;i<=N+1;i++) D[i]=none; for (i=1;i<=N;i++){ k=find(V[i]); D[k]=V[i]; if (k>ans) ans=k; } printf("%d\n",N-ans); } void solve(int r){ if (r>N) return; solve(r*2); solve(r*2+1); V[++nn]=D[r]-upd; if (r%2==0) ++upd; } int find(int p){ int l=0,m=N+1,r=(l+m)/2,x=N*2; while (l<=m){ if (D[r]<=p) l=r+1; else { if (r<x) x=r; m=r-1; } r=(l+m)/2; } return x; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator