不知道为什么WA了
#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
int n,m,q[1000001],x;
map<int,int>a;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i*i<=n;i++){
if(m%i==0&&(m-i)%(i*2)==0&&i-(m-i)/(i*2)>0){
a[i-(m-i)/(i*2)]=i+(m-i)/(i*2);
q[++x]=i-(m-i)/(i*2);
int j=m/i;
if(m%j==0&&(m-j)%(j*2)==0&&j-(m-j)/(j*2)>0){
a[j-(m-i)/(j*2)]=j+(m-j)/(j*2);
q[++x]=j-(m-i)/(j*2);
}
}
}
for(int i=1,j=2;j<=n&&i+j<=n;i++,j++){
if(m%(i+j)==0&&i-m/(i+j)>0){
a[i-m/(i+j)+1]=j+m/(i+j)-1;
q[++x]=i-m/(i+j)+1;
}
}
sort(q+1,q+x+1);
for(int i=1;i<=x;i++)
printf("[%d,%d]\n",q[i],a[q[i]]);
if(m<=n) printf("[%d,%d]",m,m);
return 0;
}