/* * fonction pour trouver le minimum et le maximum du tableau et appeler le tri pigeonnier */ void pigeonnier(ordre T1[], long taille_tableau, long rang) { long i; ordre min, max; memoire[4] += 3; min = T1[0]; max = T1[0]; barometre[4]++; //passe au travers des éléments du tableau for (i = 1; i < taille_tableau; i++, barometre[4]++) { tp++; barometre[4]++; if (T1[i].valeure < min.valeure) { tp++; barometre[4]++; min = T1[i]; } barometre[4]++; if (T1[i].valeure > max.valeure) { tp++; barometre[4]++; max = T1[i]; } } counting_sort_mm(T1, taille_tableau, min, max); }
int main() { int cases; scanf("%d",&cases); while(cases--) { int frnds,pzc; scanf("%d %d",&frnds,&pzc); long x; long counter=0; if(frnds==1) { scanf("%ld",&x); if(x==pzc) counter++; goto ab; } long money[200000]; long i=0; for(i=0;i<frnds;i++) scanf("%ld",&money[i]); counting_sort_mm(money,frnds,-200000,200000); long left=0; long right=frnds-1; while(left<right) { if((money[left]+money[right])==pzc) { left++; right--; counter++; } else if((money[left]+money[right])<pzc) left++; else right--; } ab: printf("%ld\n",counter); } return 0; }