第一次的给codeforce

其实本来不想写博客的,但是我登不进codeforce啊,不知道怎么注册,老是让我进CA什么,,算了,还是选择博客吧

说说codeforce347A, 讲真,英文题伤不起啊,看不看得懂都是问题,看懂了会不会做又是问题......

题目:http://codeforces.com/problemset/problem/347/A

题意就是说输入n个数字,然后输出(x1 - x2) + (x2 - x3) + ... + (xn - 1 - xn).这样最大值的顺序,但是同时要保证字典序最小的排列。。。我认为是这个意思吧

怎么做呢?其实很简单,先排序然后再交换头尾,其实后面note有提示的,只要你能先用sort来排序,规律就能很快看出来了

代码如下:



#include <stdio.h>
#define N 10000


void quick(int * a, int min, int max) {


int i = min;
int j = max;
int temp;
int k = a[min+(max-min)/2];


while (i <= j) {
while(i<max && a[i]<k)
i++;
while(j>min && a[j]>k)
j--;
if(i <= j) {
temp = a[i];
a[i] = a[j] ;
a[j] = temp;


i++;
j--;
}
}


if(i < max) quick(a, i, max);
if(j > min) quick(a, min, j);
}


int main()
{
int i, j, k, n;
int arr[N];


scanf("%d", &n);


for(i=0; i<n; i++)
scanf("%d", &arr[i]);


quick(arr, 0, n-1); //这里可以不用自己写快排,还麻烦,可能还出错,直接用sort....


k = arr[0];
arr[0] = arr[n-1];
arr[n-1] = k;


for(i=0; i<n; i++)
printf("%d ", arr[i]);


return 0;


}

然后我现在知道为什么我codeforce登不进去了,要翻墙的.....

有不好的地方请私聊我,第一次写博客有点紧张呢~

最后一句,我在嘉州大学暑假很开心

    • 2
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值