#pragmaComment (linker, "/stack:1024000000,1024000000")#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#include<map>#include<Set>#include<queue>#include<stack>#include<iostream>using namespaceStd;typedefLong LongLL;Const DoublePi=acos (-1.0), eps=1e-6;voidFile () {freopen ("D:\\in.txt","R", stdin); Freopen ("D:\\out.txt","W", stdout);} Template<classT>inlinevoidRead (T &x) { CharC=getchar (); x=0; while(!isdigit (c)) c=GetChar (); while(IsDigit (c)) {x=x*Ten+c-'0'; C=GetChar ();}} LL MoD=1e9+7;Const intmaxn=1200010;intn,k; LL F[MAXN],A[MAXN];structY ZintL,r;} S[MAXN];intC[maxn],b[maxn],sz; LL ANS[MAXN];intLowbit (intx) {returnx& (-x);}intSumintx) { intres=0; while(x>0) res=res+c[x],x=x-lowbit (x); returnRes;}voidUpdateintXintv) { while(x<=1200000) c[x]=c[x]+v,x=x+lowbit (x);} ll EXTEND_GCD (ll A,ll b,ll&x,ll &y) { if(a==0&&b==0)return-1; if(b==0) {x=1; y=0;returnA;} LL D=EXTEND_GCD (b,a%b,y,x); Y-=a/b*x; returnD;} ll Mod_reverse (ll a,ll N) {ll x, y; LL D=EXTEND_GCD (a,n,x,y); if(d==1)return(x%n+n)%N; Else return-1;}int Get(intx) { intL=0, r=sz-1, pos=0; while(l<=R) {intMid= (L+R)/2; if(b[mid]<x) L=mid+1; Else if(b[mid]==x) pos=mid,r=mid-1; Elser=mid-1; } returnpos+1;}BOOLCMP (X a,x b) {returna.l<B.L;}intMain () {scanf ("%d%d",&n,&k); f[0]=1; for(intI=1; i<=400000; i++) f[i]=i*f[i-1]%MoD; for(inti=k;i<=400000; i++) {LL FZ=f[i]%mod,fm=f[k]*f[i-k]%MoD; LL ni=Mod_reverse (FM,MOD); A[i]=fz*ni%MoD; } for(intI=1; i<=n;i++) {scanf ("%d%d", &s[i]. l,&S[i]. R); B[sz++]=s[i]. L, b[sz++]=S[i]. R B[sz++]=s[i]. L-1; B[sz++]=s[i]. L +1; B[sz++]=s[i]. R1; B[sz++]=s[i]. r+1; } sort (B,b+sz); Sort (S+1, s+1+n,cmp); intH=1; for(intI=1; i<=sz;i++) { while(h<=n&&Get(S[h]. L) = =i) {Update (Get(S[h]. R),1); H++; } Ans[i]=a[sum (1200000)-sum (I-1)]; } LL Ans=0; for(intI=0;i<sz;) { intpos=-1; for(intj=i;j<sz;j++) { if(B[j]>b[i]) {pos=j; Break; } } if(pos==-1) {ans= (ans+ans[i+1])%mod; Break; } Ans= (ans+ (b[pos]-b[i]) *ans[i+1]%MOD)%MoD; I=POS; } printf ("%lld\n", Ans); return 0;}
Codeforces 689E Mike and Geometry problem