哇哈
heyucheng
2023-04-04 20:26:07
2023-10-14 10:49:43
21
返回题目
#include<bits/stdc++.h>
using namespace std;
struct node{
int num;
int col;
};
int dp[2000010],col[2000010],num[100000],last[100000];
bool can[2000010];
node can_last;
int main()
{
int n,k,p;
cin>>n>>k>>p;
for(int i=1;i<=n;i++)
{
int s;
cin>>col[i]>>s;
if(s<=p) can[i]=1;
}
for(int i=1;i<=n;i++)
{
int k=col[i];
if(can[i]) dp[i]=num[k];
else if(can_last.num>=last[k]&&can_last.num) dp[i]=num[k];
else dp[i]=dp[last[k]];
last[k]=i;
if(can[i])
{
can_last.num=i;
can_last.col=k;
}
num[k]++;
}
long long ans=0;
for(int i=1;i<=n;i++)
{
ans+=dp[i];
}
cout<<ans<<endl;
return 0;
}
{{ vote && vote.total.up }}