(File IO): entrada: sum.in salida: sum.out
límite de tiempo: 1000 ms limitaciones de espacio: 65536 restricciones KB específicos
Goto Boletín de problemas
Descripción del título
dado
número
, el valor absoluto de la suma mínima de dos números
es decir buscan
(
no es igual a
) mínimo
Introduzca
un número de la primera fila
la línea siguiente
número
Salida
número de línea de una
valor mínimo, el valor absoluto de la suma de dos números
entrada de la muestra
. 5
-2. 6. 7. 7 -8
Resultado de muestra
1
límite de rango de datos
• Para
% de los datos,
.
• Para
% de los datos, $ n- <= 10. 5, -10. 6 <AI = <= 10. 6 ^.
• Para
% de los datos,
.
Solución de las ideas
primero con valor absoluto de cada secuencia de números como una clave de fila, y luego cada dos números adyacentes juntos y buscar un mínimo.
código
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,a[1000000],ans;
bool cmp(int x,int y)
{
return abs(x)<abs(y);
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1,cmp);
ans=2147483647;
for(int i=2;i<=n;i++)
{
if(abs(a[i]+a[i-1])<ans)
ans=abs(a[i]+a[i-1]);
}
printf("%d",ans);
}