OJ题目:题目1352:和为S的两个数字
AC_CODE
int x[1000002];
int main()
{
int n , k , i , j;
while(cin>>n>>k)
{
for(i = 1;i <= n;i++)
scanf("%d",&x[i]);
for(i = 1,j = n;i < j;)
{
int sum = x[i] + x[j];
if(sum == k)
{
cout<<x[i]<<" "<<x[j]<<endl;
break;
}
else
if(sum > k) j--;
else i++;
}
if(i == j)cout <<-1<<" "<<-1<<endl;
}
return 0;
}
void show(int a , int b){
int i ;
for(i = a;i < b;i++)
printf("%d " , i) ;
printf("%d\n" , i) ;
}
int main(){
int low , high , flag , i , j , k , n , sum ;
while(scanf("%d" , &n) && n >= 0){
low = 1 , high = 2 , flag = 0 , sum = 3 ;
while(low < high){
if(sum == n){
flag = 1 ;
show(low , high) ;
sum -= low ;
low++ ;
}
else if(sum < n){
high++ ;
sum += high ;
}
else{
sum -= low ;
low++ ;
}
}
if(!flag) puts("Pity!") ;
puts("#") ;
}
return 0 ;
}