JOJ 2680 Problem F: Coin Game

题意:给你两组数,第一组按从大到小的顺序给出,第二组随机给,让你求挪动最小的次数使第二组的数字比第一组相对应位置的数字要小,挪动的顺序只能够相邻的挪动

分析:从第一组最后一个数字开始,从第二组最后一个数字开始找,若找到比第一组的小的数,就将他标记且挪动到最后一个位置,无论该数字是否为第二组数中最大的还是最小的都成立,只要他是最近的就可以了,大的满足条件何况小的

#include<stdio.h>
#include<string.h>
int main()
{
    int num1[110],num2[110];
    int i,j,n;
    while(scanf("%d",&n)!=EOF)
    {
        for (i=0; i<n; i++)
            scanf("%d",&num1[i]);
        for (i=0; i<n; i++)
            scanf("%d",&num2[i]);
        int ans=0;
        for (i=n-1; i>=0; i--)
        {
            for (j=n-1; j>=0; j--)
                if(num1[i]<num2[j]) ans++;
                else if(num2[j]!=-1) {num2[j]=-1; break; }
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

posted @ 2012-05-01 21:14  calmound  阅读(203)  评论(2编辑  收藏  举报