tql 吊打我 %%%
by 梧桐灯 @ 2019-09-26 16:24:14
tql 吊打我 %%%
by Haishu @ 2019-09-26 16:24:23
# tql 吊打我 %%%
by Binary_Search_Tree @ 2019-09-26 16:24:26
# tql 吊打我 %%%
by lobserver @ 2019-09-26 16:24:44
FAKER!!!!!!!!!
by 月·无笙 @ 2019-09-26 16:24:46
@[lobserver](/space/show?uid=23336) @[Binary_Search_Tree](/space/show?uid=40985)
我听到有人在说我。。。。
by WhalFaling @ 2019-09-26 16:28:04
```
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
const int N=1000000005;
const int W=100005;
const long long mod=2147483648ll;
#define int long long
typedef long long ll;
int n,m,w;
int K;
int locx[W],locy[W],totx,toty;
struct LOC
{
int x;
int y;
}zb[W];
ll C[15][W];
ll c[W];
int init[W];
vector<int> X[W];
struct TREE
{
int L;
int R;
// int l,r;
ll data;
}tree[W<<4];
ll ans;
void build(int k,int l,int r)
{
if(l==r)
{
// tree[k].l=l;
//tree[k].r=r;
tree[k].R=init[l];
return ;
}
int mid=l+r>>1;
// tree[k].l=l;
// tree[k].r=r;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
}
void update(int k,int l,int r,int pos)
{
if(l==r)
{
tree[k].R--;
tree[k].L++;
tree[k].data=c[tree[k].L]*c[tree[k].R]%mod;
return ;
}
int mid=(l+r)>>1;
if(pos<=mid) update(k<<1,l,mid,pos);
else update(k<<1|1,mid+1,r,pos);
tree[k].data=(tree[k<<1].data+tree[k<<1|1].data)%mod;
}
ll query(int k,int l,int r,int ql,int qr)
{
if(l>=ql&&r<=qr)
{
// printf("tree[%d].data=%d\n",k,tree[k].data);
return tree[k].data;
}
int mid=l+r>>1;
ll res=0;
if(ql<=mid)
res=(res+query(k<<1,l,mid,ql,qr))%mod;
if(mid<qr)
res=(res+query(k<<1|1,mid+1,r,ql,qr))%mod;
return res%mod;
}
main()
{
scanf("%lld%lld",&n,&m);
scanf("%lld",&w);
for(int i=1;i<=w;i++)
{
scanf("%lld%lld",&zb[i].x,&zb[i].y);
locx[++totx]=zb[i].x; locy[++toty]=zb[i].y;
}
sort(locx+1,locx+1+totx);
sort(locy+1,locy+1+toty);
totx=unique(locx+1,locx+1+totx)-locx-1;
toty=unique(locy+1,locy+1+toty)-locy-1;
//sort(zb+1,zb+1+w,cmp);
scanf("%lld",&K);
C[0][0]=1;
for(int i=1;i<=w;i++)
{
init[zb[i].y=lower_bound(locy+1,locy+1+toty,zb[i].y)-locy]++;
X[lower_bound(locx+1,locx+1+totx,zb[i].x)-locx].push_back(zb[i].y);
C[0][i]=1;
for(int j=1;j<=K;j++)
C[j][i]=(C[j][i-1]+C[j-1][i-1])%mod;
c[i]=C[K][i];
}
build(1,1,toty);
for(int i=1;i<=totx;i++)
{
sort(X[i].begin(),X[i].end());
if(!X[i].empty())
update(1,1,toty,X[i][0]);
for(int j=1;j<X[i].size();j++)
{
if(X[i][j-1]+1<X[i][j]&&j>=K&&X[i].size()-j>=K)/
{
// printf("QAQ\n");
ans=(ans+query(1,1,toty,X[i][j-1]+1,X[i][j]-1)*c[j]%mod*c[X[i].size()-j]%mod)%mod;
}
update(1,1,toty,X[i][j]);
}
}
printf("%lld\n",(ans+mod)%mod);
return 0;
}
```
by 繁星灬夏若離 @ 2019-09-26 16:32:03
感谢巨佬。tql %%%
by 月·无笙 @ 2019-09-26 16:44:24
# tql 吊打我 %%%
by whzxy_starklover @ 2019-09-27 16:58:41