Advertisement
Guest User

Untitled

a guest
Dec 18th, 2012
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.56 KB | None | 0 0
  1. #include<cstdio>
  2. #define FOR(i,a,b) for(int i=(int)a;i<=(int)b;++i)
  3. #define REP(i,n) FOR(i,0,n-1)
  4. #define z(i,j) ((179*(i+1)+719*(j+1))%1000+(j-i-1)*500)
  5. #define INF 1<<30
  6. int d[13010],n,v,to;
  7. char u[13010];
  8. main(){
  9.     scanf("%d",&n);
  10.     REP(i,n)d[i]=INF,u[i]=false;
  11.     d[0]=0;
  12.     REP(i,n){
  13.         v=-1;
  14.         REP(j,n)
  15.             if (!u[j]&&(v==-1||d[j]<d[v]))
  16.                 v=j;
  17.         u[v]=true;
  18.         FOR(to,v+1,n-1)
  19.             if (d[v]+z(v,to)<d[to])
  20.                 d[to]=d[v]+z(v,to);
  21.     }
  22.     printf("%d",d[n-1]-(n-1)*500);
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement