选择客栈

陈子骏

2018-04-02 17:43:02

Personal

``` #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); } ```