标准代码
2026-03-19 15:36:35
发布于:江西
#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
int k;
int p;
scanf("%d %d %d",&n,&k,&p);
int u[200000][10]={};
for(int i=1;i<=n;i++){
scanf("%d %d",&u[i][0],&u[i][1]);
}
int ii[200000]={};
int kk[1000]={};//kk数组从1到k的值记录每一种颜色
// for(int i=1;i<=k;i++){
// kk[i]=i;
// }
int x=0;//x是不合法区间内的总数
int y=0;//y记录总数
for(int i=1;i<=n;i++){
if(u[i][1]>p){
ii[i]=1;//0代表合法,1代表不合法
}
}
for(int i=1;i<=n;i++){
kk[u[i][0]];
}
for(int j=0;j<k;j){
y+=(kk[j]-1)*kk[j]/2;
}
for(int j=0;j<k;j++){
kk[j]=0;
}
int i=1;
for(;i<=n;i++){
if(ii[i]==1){
kk[u[i][0]];
}
else{
for(int j=0;j<k;j){
x+=(kk[j]-1)*kk[j]/2;
}
for(int j=0;j<k;j++){
kk[j]=0;
}
}
}
if(ii[n]==1){ //如果最后的区间是不合法的,循环结束后单算和
for(int j=0;j<k;j++){
x+=(kk[j]-1)*kk[j]/2;
}
}
printf("%d\n",y-x);
return 0;
}
这里空空如也

有帮助,赞一个