Witam, jeśli ktoś ma trochę wolnego czasu, to byłbym wdzięczny za pomoc; sprawa wygląda tak: algorytm, który wymyśliłem wydaje się dobry (połowa testów działa), natomiast maszyna sprawdzająca uważa, że tak nie jest, w skrócie mam prośbę o znalezienie błędu w kodzie (kod jest niedługi). Z góry dziękuję za pomoc.
Treść zadania - link
Wyniki z testów - link
Mój kod:
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m; cin>>n>>m;
int p=0,k=n-1;
long long s=0;
int *tab=new int [n];
for(int i=0; i<n; i++)
cin>>tab[i];
sort(tab,tab+n);
while(tab[p]+tab[k]<=m) p++;
while(p<k){
if(tab[k]+tab[p]>=m){
s+=(k-p);
k--;
}
else p++;
}
cout<<s;
}