选择客栈
陈子骏
2018-04-02 17:43:02
```
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int n,k,p;
int ans;
struct edg{
int col,val,next;
}a[200001];
int b[200001][51];
int main()
{
scanf("%d%d%d",&n,&k,&p);
for(int i=0;i<k;i++)
b[0][i]=0;
int bob=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i].col,&a[i].val);
if(a[i].val<=p)
bob=i;
a[i].next=bob;
for(int j=0;j<k;j++)
{
b[i][j]=b[i-1][j];
}
b[i][a[i].col]++;
}
for(int i=1;i<=n;i++)
{
int gg=a[i].next,g=a[i].col;
ans+=b[gg][g];
if(gg==i)ans--;
}
printf("%d",ans);
}
```