(Fichier IO): entrée: sum.in sortie: sum.out
temps limite: 1000 ms limites de l' espace: 65536 KB restrictions spécifiques
Aller ProblemSet
Description du titre
donné
nombre
, la valeur absolue de la somme minimum de deux nombres
-dire cherchent
(
est différent de
) minimum
Entrez
un numéro de la première ligne
la ligne suivante
nombre
Sortie
ligne un nombre
valeur minimale, la valeur absolue de la somme de deux nombres
entrée d' échantillon
. 5
-2. 6. 7. 7 -8
Exemple de sortie
1
Limite de la plage de données
• Pour
% des données,
.
• Pour
% des données, n- $ <= 10. 5, -10. 6 <AI = <= 10. 6 ^.
• Pour
% des données,
.
Résolution des idées
d' abord avec la valeur absolue de chaque séquence de nombres en tant que clé de ligne, puis tous les deux nombres adjacents ensemble et chercher un minimum.
code
#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);
}