请问为什么这么写双指针就是错的
查看原帖
请问为什么这么写双指针就是错的
1025217
fe117楼主2024/6/13 23:17
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int T,id;
    cin>>T>>id;
    for(int t=0;t<T;t++){
        int n;
        cin>>n;
        int a[n+5]={};
        for(int i=0;i<n;i++){
            cin>>a[i];
        }
        sort(a,a+n);
        int q=n-2,p=1;
        bool f=0;
        /*for(int p=1;p<q;p++){
            while(a[p]-a[0]>a[n-1]-a[q]&&q>p){
                q--;
            }
            if(a[p]-a[0]==a[n-1]-a[q]){
                cout<<"Yes\n";
                f=1;
                break;
            }
        }*/
        while(p<q){
        	if(a[p]-a[0]==a[n-1]-a[q]){
        		cout<<"Yes\n";
        		f=1;
        		break;
			}
			if(a[p]-a[0]>a[n-1]-a[q]){
				q--;
			}
			else{
				p++;
			}
		}
        if(!f)cout<<"No\n";
    }
    return 0;
}

将注释下面的while循环换成注释的for循环就会WA,否则是AC

WA

AC

所以为什么

2024/6/13 23:17
加载中...