zoukankan      html  css  js  c++  java
  • zzuli:小G的日常之烦心事

    http://acm.zzuli.edu.cn/problem.php?id=2398

    题目描述

    好烦,小G遇到了一个难题,题目是这样的
    给你一个数列n,数列中的每一个数是a[0],a[1],a[2]...a[n-1];
    问abs(a[j]-a[i])+j-i的最大值是多少?其中0<=i<j<n,abs(a[j]-a[i])表示a[j]-a[i]的绝对值

    输入

    第一行输入一个数n(n<1e6)
    第二行输入n个数

    输出

    abs(a[j]-a[i])+j-i的最大值

    样例输入

    5
    5 4 3 2 1

    样例输出

    8
    

    当a[j]-a[i]>0时,abs(a[j] - a[i]) + j - i  =  a[j] - a[i] + j - i = (a[j] + j) - (a[i] + i)。

    当a[j]-a[i]<0时,abs(a[j] - a[i]) + j - i  =  a[i] - a[j] + j - i = (a[i] - i) - (a[j] - j)。

    #include<stdio.h>
    #define N 1000020
    int a[N];
    int main()
    {
    	int n,maxx,minn,i,sum;
    	scanf("%d",&n);
    	scanf("%d",&a[1]);
    	maxx=a[1]-1;
    	minn=a[1]-1;
    	for(i=2;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    		a[i]-=i;
    		if(maxx<a[i])
    			maxx=a[i];
    		if(minn>a[i])
    			minn=a[i];
    	}
    	sum=maxx-minn;
    	maxx=a[1]+1;
    	minn=a[1]+1;
    
    	for(i=2;i<=n;i++)
    	{
    		a[i]=a[i]+2*i;
    
    		if(maxx<a[i])
    			maxx=a[i];
    		if(minn>a[i])
    			minn=a[i];
    	}
    
    	if(sum<maxx-minn)
    		sum=maxx-minn;
    	printf("%d
    ",sum);
    	return 0;
    } 
  • 相关阅读:
    MD5双重加密设计
    ComBox(自定义封装)LimitToList属性和做到移走光标不是下拉项清空输入
    强制下线功能
    广播
    动态添加碎片
    RecyclerView
    Listview的运行效率
    Listview
    通知栏
    补间动画
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10002930.html
Copyright © 2011-2022 走看看