C. Boats Competition【双指针】

  1. 链接

    C. Boats Competition

  2. 题意

    两两一组构成一个和,找到和出现次数最多是多少。

  3. 思路

    双指针,枚举2-2*n。

  4. 代码

    #include
    using namespace std;
    
    typedef long long ll;
    const int maxn = 2e5+10;
    const int mod = 1e9+7;
    
    int a[maxn];
    
    int main(void){
    	int t;
    	cin >> t;
    	while(t--){
    		int n;
    		cin >> n;
    		for(int i = 1; i <= n; i++) cin >> a[i];
    		sort(a+1,a+1+n);
    		int maxx = 0;
    		for(int i = 2; i <= 100; i++){
    			int cnt = 0;
    			int l = 1;
    			int r = n;
    			while(l<r){
    				if(a[l]+a[r]==i){
    					cnt++;
    					maxx = max(cnt,maxx);
    					l++;
    					r--;
    				}else if(a[l]+a[r]>i){
    					r--;
    				}else l++;
    			}
    		}
    		cout<<maxx<<endl;
    	}
    	return 0;
    
    

你可能感兴趣的:(双指针)