Language: C++

#include <cstdio>
#include <algorithm>
using namespace std;
const int N=100010;
const int INF=1e9;
const int MOD=1e9+7;
int n,m;
int a[N],b[N];
struct Point{
　　int x,y;
　　friend bool operator == (const Point &a,const Point &b){
　　　　return a.x==b.x&&a.y==b.y;
　　}
}p[N];
int d[N],dcnt;
int f[N];
void readData(){
　　scanf("%d%d",&n,&m);
　　for(int i=1;i<=n;i++) scanf("%d",&a[i]);
　　for(int i=1;i<=m;i++) scanf("%d",&b[i]);
}
void initDis(){
　　int cnt=1;
　　p[1]=(Point){0,0};
　　for(int i=1,j;i<=n;i++){
　　　　j=upper_bound(b+1,b+1+m,a[i])-b;
　　　　if(1<j&&j<=m)
　　　　　　p[++cnt]=(Point){a[i]-b[j-1],b[j]-a[i]};
　　}
　　p[++cnt]=(Point){INF,INF};
　　n=cnt;
}
void Diz(){
　　for(int i=1;i<=n;i++)
　　　　d[++dcnt]=p[i].y;
　　sort(d+1,d+1+dcnt);
　　dcnt=unique(d+1,d+1+dcnt)-d-1;
　　for(int i=1;i<=n;i++)
　　　　p[i].y=lower_bound(d+1,d+1+dcnt,p[i].y)-d;
}
namespace BIT{
　　int n;
　　int a[N];
　　void setup(int _n){
　　　　n=_n;
　　}
　　void add(int u,int x){
　　　　for(;u&&u<=n;u+=u&-u)
　　　　　　(a[u]+=x)%=MOD;
　　}
　　int que(int u){
　　　　int res=0;
　　　　for(;u;u-=u&-u)
　　　　　　(res+=a[u])%=MOD;
　　　　return res;
　　}
}
bool cmpByX(const Point &a,const Point &b){
　　if(a.x!=b.x)
　　　　return a.x<b.x;
　　return a.y<b.y;
}
void solve(){
　　sort(p+1,p+1+n,cmpByX);
　　n=unique(p+1,p+1+n)-p-1;
　　BIT::setup(dcnt);
　　BIT::add(p[1].y,1);
　　for(int i=2,j;i<=n;i=j){
　　　　for(j=i;j<=n&&p[j].x==p[i].x;j++);
　　　　for(int k=i;k<j;k++)
　　　　　　f[k]=BIT::que(p[k].y-1);
　　　　for(int k=i;k<j;k++)
　　　　　　BIT::add(p[k].y,f[k]);
　　}
　　printf("%d\n",f[n]);
}
int main(){
　　readData();
　　initDis();
　　Diz();
　　solve();
　　return 0;
}


Compiler output:
a.cc:10:1: error: extended character 　 is not valid in an identifier
   10 | 　　int x,y;
      | ^
a.cc:10:1: error: extended character 　 is not valid in an identifier
a.cc:11:1: error: extended character 　 is not valid in an identifier
   11 | 　　friend bool operator == (const Point &a,const Point &b){
      | ^
a.cc:11:1: error: extended character 　 is not valid in an identifier
a.cc:12:1: error: extended character 　 is not valid in an identifier
   12 | 　　　　return a.x==b.x&&a.y==b.y;
      | ^
a.cc:12:1: error: extended character 　 is not valid in an identifier
a.cc:12:1: error: extended character 　 is not valid in an identifier
a.cc:12:1: error: extended character 　 is not valid in an identifier
a.cc:13:1: error: extended character 　 is not valid in an identifier
   13 | 　　}
      | ^
a.cc:13:1: error: extended character 　 is not valid in an identifier
a.cc:18:1: error: extended character 　 is not valid in an identifier
   18 | 　　scanf("%d%d",&n,&m);
      | ^
a.cc:18:1: error: extended character 　 is not valid in an identifier
a.cc:19:1: error: extended character 　 is not valid in an identifier
   19 | 　　for(int i=1;i<=n;i++) scanf("%d",&a[i]);
      | ^
a.cc:19:1: error: extended character 　 is not valid in an identifier
a.cc:20:1: error: extended character 　 is not valid in an identifier
   20 | 　　for(int i=1;i<=m;i++) scanf("%d",&b[i]);
      | ^
a.cc:20:1: error: extended character 　 is not valid in an identifier
a.cc:23:1: error: extended character 　 is not valid in an identifier
   23 | 　　int cnt=1;
      | ^
a.cc:23:1: error: extended character 　 is not valid in an identifier
a.cc:24:1: error: extended character 　 is not valid in an identifier
   24 | 　　p[1]=(Point){0,0};
      | ^
a.cc:24:1: error: extended character 　 is not valid in an identifier
a.cc:25:1: error: extended character 　 is not valid in an identifier
   25 | 　　for(int i=1,j;i<=n;i++){
      | ^
a.cc:25:1: error: extended character 　 is not valid in an identifier
a.cc:26:1: error: extended character 　 is not valid in an identifier
   26 | 　　　　j=upper_bound(b+1,b+1+m,a[i])-b;
      | ^
a.cc:26:1: error: extended character 　 is not valid in an identifier
a.cc:26:1: error: extended character 　 is not valid in an identifier
a.cc:26:1: error: extended character 　 is not valid in an identifier
a.cc:27:1: error: extended character 　 is not valid in an identifier
   27 | 　　　　if(1<j&&j<=m)
      | ^
a.cc:27:1: error: extended character 　 is not valid in an identifier
a.cc:27:1: error: extended character 　 is not valid in an identifier
a.cc:27:1: error: extended character 　 is not valid in an identifier
a.cc:28:1: error: extended character 　 is not valid in an identifier
   28 | 　　　　　　p[++cnt]=(Point){a[i]-b[j-1],b[j]-a[i]};
      | ^
a.cc:28:1: error: extended character 　 is not valid in an identifier
a.cc:28:1: error: extended character 　 is not valid in an identifier
a.cc:28:1: error: extended character 　 is not valid in an identifier
a.cc:28:1: error: extended character 　 is not valid in an identifier
a.cc:28:1: error: extended character 　 is not valid in an identifier
a.cc:29:1: error: extended character 　 is not valid in an identifier
   29 | 　　}
      | ^
a.cc:29:1: error: extended character 　 is not valid in an identifier
a.cc:30:1: error: extended character 　 is not valid in an identifier
   30 | 　　p[++cnt]=(Point){INF,INF};
      | ^
a.cc:30:1: error: extended character 　 is not valid in an identifier
a.cc:31:1: error: extended character 　 is not valid in an identifier
   31 | 　　n=cnt;
      | ^
a.cc:31:1: error: extended character 　 is not valid in an identifier
a.cc:34:1: error: extended character 　 is not valid in an identifier
   34 | 　　for(int i=1;i<=n;i++)
      | ^
a.cc:34:1: error: extended character 　 is not valid in an identifier
a.cc:35:1: error: extended character 　 is not valid in an identifier
   35 | 　　　　d[++dcnt]=p[i].y;
      | ^
a.cc:35:1: error: extended character 　 is not valid in an identifier
a.cc:35:1: error: extended character 　 is not valid in an identifier
a.cc:35:1: error: extended character 　 is not valid in an identifier
a.cc:36:1: error: extended character 　 is not valid in an identifier
   36 | 　　sort(d+1,d+1+dcnt);
      | ^
a.cc:36:1: error: extended character 　 is not valid in an identifier
a.cc:37:1: error: extended character 　 is not valid in an identifier
   37 | 　　dcnt=unique(d+1,d+1+dcnt)-d-1;
      | ^
a.cc:37:1: error: extended character 　 is not valid in an identifier
a.cc:38:1: error: extended character 　 is not valid in an identifier
   38 | 　　for(int i=1;i<=n;i++)
      | ^
a.cc:38:1: error: extended character 　 is not valid in an identifier
a.cc:39:1: error: extended character 　 is not valid in an identifier
   39 | 　　　　p[i].y=lower_bound(d+1,d+1+dcnt,p[i].y)-d;
      | ^
a.cc:39:1: error: extended character 　 is not valid in an identifier
a.cc:39:1: error: extended character 　 is not valid in an identifier
a.cc:39:1: error: extended character 　 is not valid in an identifier
a.cc:42:1: error: extended character 　 is not valid in an identifier
   42 | 　　int n;
      | ^
a.cc:42:1: error: extended character 　 is not valid in an identifier
a.cc:43:1: error: extended character 　 is not valid in an identifier
   43 | 　　int a[N];
      | ^
a.cc:43:1: error: extended character 　 is not valid in an identifier
a.cc:44:1: error: extended character 　 is not valid in an identifier
   44 | 　　void setup(int _n){
      | ^
a.cc:44:1: error: extended character 　 is not valid in an identifier
a.cc:45:1: error: extended character 　 is not valid in an identifier
   45 | 　　　　n=_n;
      | ^
a.cc:45:1: error: extended character 　 is not valid in an identifier
a.cc:45:1: error: extended character 　 is not valid in an identifier
a.cc:45:1: error: extended character 　 is not valid in an identifier
a.cc:46:1: error: extended character 　 is not valid in an identifier
   46 | 　　}
      | ^
a.cc:46:1: error: extended character 　 is not valid in an identifier
a.cc:47:1: error: extended character 　 is not valid in an identifier
   47 | 　　void add(int u,int x){
      | ^
a.cc:47:1: error: extended character 　 is not valid in an identifier
a.cc:48:1: error: extended character 　 is not valid in an identifier
   48 | 　　　　for(;u&&u<=n;u+=u&-u)
      | ^
a.cc:48:1: error: extended character 　 is not valid in an identifier
a.cc:48:1: error: extended character 　 is not valid in an identifier
a.cc:48:1: error: extended character 　 is not valid in an identifier
a.cc:49:1: error: extended character 　 is not valid in an identifier
   49 | 　　　　　　(a[u]+=x)%=MOD;
      | ^
a.cc:49:1: error: extended character 　 is not valid in an identifier
a.cc:49:1: error: extended character 　 is not valid in an identifier
a.cc:49:1: error: extended character 　 is not valid in an identifier
a.cc:49:1: error: extended character 　 is not valid in an identifier
a.cc:49:1: error: extended character 　 is not valid in an identifier
a.cc:50:1: error: extended character 　 is not valid in an identifier
   50 | 　　}
      | ^
a.cc:50:1: error: extended character 　 is not valid in an identifier
a.cc:51:1: error: extended character 　 is not valid in an identifier
   51 | 　　int que(int u){
      | ^
a.cc:51:1: error: extended character 　 is not valid in an identifier
a.cc:52:1: error: extended character 　 is not valid in an identifier
   52 | 　　　　int res=0;
      | ^
a.cc:52:1: error: extended character 　 is not valid in an identifier
a.cc:52:1: error: extended character 　 is not valid in an identifier
a.cc:52:1: error: extended character 　 is not valid in an identifier
a.cc:53:1: error: extended character 　 is not valid in an identifier
   53 | 　　　　for(;u;u-=u&-u)
      | ^
a.cc:53:1: error: extended character 　 is not valid in an identifier
a.cc:53:1: error: extended character 　 is not valid in an identifier
a.cc:53:1: error: extended character 　 is not valid in an identifier
a.cc:54:1: error: extended character 　 is not valid in an identifier
   54 | 　　　　　　(res+=a[u])%=MOD;
      | ^
a.cc:54:1: error: extended character 　 is not valid in an identifier
a.cc:54:1: error: extended character 　 is not valid in an identifier
a.cc:54:1: error: extended character 　 is not valid in an identifier
a.cc:54:1: error: extended character 　 is not valid in an identifier
a.cc:54:1: error: extended character 　 is not valid in an identifier
a.cc:55:1: error: extended character 　 is not valid in an identifier
   55 | 　　　　return res;
      | ^
a.cc:55:1: error: extended character 　 is not valid in an identifier
a.cc:55:1: error: extended character 　 is not valid in an identifier
a.cc:55:1: error: extended character 　 is not valid in an identifier
a.cc:56:1: error: extended character 　 is not valid in an identifier
   56 | 　　}
      | ^
a.cc:56:1: error: extended character 　 is not valid in an identifier
a.cc:59:1: error: extended character 　 is not valid in an identifier
   59 | 　　if(a.x!=b.x)
      | ^
a.cc:59:1: error: extended character 　 is not valid in an identifier
a.cc:60:1: error: extended character 　 is not valid in an identifier
   60 | 　　　　return a.x<b.x;
      | ^
a.cc:60:1: error: extended character 　 is not valid in an identifier
a.cc:60:1: error: extended character 　 is not valid in an identifier
a.cc:60:1: error: extended character 　 is not valid in an identifier
a.cc:61:1: error: extended character 　 is not valid in an identifier
   61 | 　　return a.y<b.y;
      | ^
a.cc:61:1: error: extended character 　 is not valid in an identifier
a.cc:64:1: error: extended character 　 is not valid in an identifier
   64 | 　　sort(p+1,p+1+n,cmpByX);
      | ^
a.cc:64:1: error: extended character 　 is not valid in an identifier
a.cc:65:1: error: extended character 　 is not valid in an identifier
   65 | 　　n=unique(p+1,p+1+n)-p-1;
      | ^
a.cc:65:1: err