#include <iostream>
#include <cstdlib>
#include <cstdio>
#define SZ 10005
#define INF 100000000
#define ll long long
using namespace std;
ll a[SZ];
int main()
{
ll N,M,MN;
bool f=0;
ll price2,price1;
price2 = 1000001;
price1 = 1000001;
int d = price1+price2;
//cout<<d<<"\n";
while(cin>>N)
{
MN = INF;
for(int i=0;i<N;i++)
cin>>a[i];
cin>>M;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
if(a[i]+a[j]==M && i!=j)
{
if(abs(a[i]-a[j])<MN)
{
MN = abs(a[i]-a[j]);
price1 = a[i];
price2 = a[j];
}
}
}
}//for loop
if(price1>price2)
{
price1 = price1 + price2;
price2 = price1 - price2;
price1 = price1 - price2;
}
cout<<"Peter should buy books whose prices are "<<price1<<" and "<<price2<<".\n\n";
}//while
}
Another way:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#define INF 10000000
using namespace std;
bool val[1000005];
int arr[10005];
int main()
{
int N,tmp,d;
int total,diff;
int I,J;
while(scanf("%d",&N)!=EOF)
{
memset(arr,0,sizeof(arr));
memset(val,0,sizeof(val));
diff=INF;
for(int i=0;i<N;i++)
{
cin>>arr[i];
val[arr[i]]=1;
}
cin>>total;
for(int i=0;i<N;i++)
{
tmp=total-arr[i];
if(tmp<0)
continue;
if(tmp>1000001)
continue;
if(val[tmp])
{
d = abs(arr[i]-tmp);
if(d<diff)
{
diff=d;
I=arr[i];
J=tmp;
}
}
}
if(I>J)
{
I=I+J;
J=I-J;
I=I-J;
}
cout<<"Peter should buy books whose prices are "<<I<<" and "<<J<<".\n\n";
}
return 0;
}