题目描述

高贵的蕾米莉亚大小姐每天需要饮用定量 B 型血的红茶以保持威严,并且要分两杯在不同时段饮用。

女仆长十六夜咲夜每天可以制作很多杯不同剂量 B 型血的红茶供蕾米莉亚大小姐饮用。
某日,你和天才妖精琪露诺偷偷潜入红魔馆被咲夜抓住,要求在今日份的红茶中挑出所有满足大小姐要求的茶杯,否则……

输入描述:

每个样例有三行输入,第一行输入表示茶杯个数,第二行输入表示每份茶杯里的 B 型血剂量,第三行表示大小姐今天的定量

输出描述:

对每一个样例,输出所有可能的搭配方案,如果有多种方案,请按每个方案的第一杯 B 型血剂量的大小升序排列。
如果无法找到任何一种满足大小姐的方案,输出"NO"(不包括引号)并换行。
示例1

输入

7
2 4 6 1 3 5 7
7

输出

1 6
2 5
3 4

备注:

茶杯个数不超过100000,保证茶杯里的B型血剂量两两不同。

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
   int cup,today;
   cin >> cup;
   vector<int> cups(cup);
   for( int i = 0 ; i < cup ; i ++ ) cin >> cups[i];
   cin >> today;
   sort(cups.begin(),cups.end());
   int start=0,end=cup-1;
   int flag=0;
   while( start < end ){
       if( cups[start] + cups[end] > today ) end --;//过大
       else if( cups[start] + cups[end] < today ) start++;
       else{
           printf("%d %d \n",cups[start],cups[end]);
           flag = 1;
           start++;
       }
   }
   printf(flag?"":"NO\n");
}

吃到了语法糖很开心】


0 条评论

发表评论

Avatar placeholder