両二元グループ差最小最大対数(C++)
1485 ワード
タイトル:
Qさんは今日トイレに行くとき、この問題を思い出しました.n個の数があり、2つの2つが2元グループを構成しています.差が一番小さいのはどのくらいですか.差が一番大きいのは?
説明を入力:
複数のテストデータのセットを入力します.
テストデータのセットごとに:
N-本グループのテストデータはn個数a 1,a 2...an-計算する必要があるデータ保証:1<=N<=10000,0<=ai<=INT_MAX.
出力の説明:
各データのセットについて、2つの数を出力し、1番目の数は差の最小の対数を表し、2番目の数は差の最大の対数を表す.
入力例:
6 45 12 45 32 5 6
出力例:
1 2
Qさんは今日トイレに行くとき、この問題を思い出しました.n個の数があり、2つの2つが2元グループを構成しています.差が一番小さいのはどのくらいですか.差が一番大きいのは?
説明を入力:
複数のテストデータのセットを入力します.
テストデータのセットごとに:
N-本グループのテストデータはn個数a 1,a 2...an-計算する必要があるデータ保証:1<=N<=10000,0<=ai<=INT_MAX.
出力の説明:
各データのセットについて、2つの数を出力し、1番目の数は差の最小の対数を表し、2番目の数は差の最大の対数を表す.
入力例:
6 45 12 45 32 5 6
出力例:
1 2
#include
#include
#include
using namespace std;
void result(vector &a,int n);
int main()
{
int num;
while(cin>>num)
{
int temp;
vector data;
for(int i=0; i>temp;
data.push_back(temp);
}
result(data,num);
}
return 0;
}
void result(vector &a,int n)
{
if(n<1) return;
sort(a.begin(),a.end());
int m1 = 1;
int m2 = 1;
for(int i=0; i0; --i)//
{
if(a[i-1]!=a[i])
{
break;
}
++m2;
}
int maxNum=m1*m2;//
int min_temp=a[1]-a[0];
int minNum=0;
for(int i=2; i=0&&a[j]==a[i])//
{
++minNum;
--j;
}
}
}
else
{
for(int i=1; i