心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
排序、模拟。
以下是我的代码:
#include<stdio.h>
#define MAXN 50001
typedef 
struct
{
    
long num,w;
}
newtype;
void qsort(newtype a[],long begin,long end)
{
    
long i=begin,j=end,mid=a[(begin+end)/2].w,midn=a[(begin+end)/2].num;
    newtype t;
    
do{
         
while((a[i].w>mid)||(a[i].w==mid&&a[i].num<midn)) i++;
         
while((a[j].w<mid)||(a[j].w==mid&&a[j].num>midn)) j--;
         
if(i<=j)
         
{
            t
=a[i];a[i]=a[j];a[j]=t;
            i
++;j--;
         }

    }
while(i<=j);
    
if(i<end)   qsort(a,i,end);
    
if(j>begin) qsort(a,begin,j);
}

int main()
{
    
long n,k,i,e[11];
    newtype a[MAXN];
    scanf(
"%ld%ld",&n,&k);
    
for(i=1;i<=10;i++)
      scanf(
"%ld",&e[i]);
    
for(i=1;i<=n;i++)
    
{
       scanf(
"%ld",&a[i].w);
       a[i].num
=i;
    }

    
// Read In
    qsort(a,1,n);
    
for(i=1;i<=n;i++)
      a[i].w
+=e[(i-1)%10+1];
    qsort(a,
1,n);
    
for(i=1;i<=k;i++)
      printf(
"%ld ",a[i].num);
return 0;
}

posted on 2010-01-06 20:06 lee1r 阅读(223) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:基础/模拟

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理