提交时间:2024-01-23 09:19:54
运行 ID: 123741
#include <bits/stdc++.h> using namespace std; struct node{ int cst; int no; }; vector<node> okcolr[55]; vector<node> nocolr[55]; int sum[200005]; int a[200005]; int main(){ int n,m,k; cin>>n>>m>>k; for(int i = 0;i<n;i++){ int x,y; cin>>x>>y; a[i] = y; if(y<=k){ if(i==0) a[i]++; else a[i] = a[i-1]+1; } if(y<=k)okcolr[x].push_back({y,i}); else nocolr[x].push_back({y,i}); } long long cnt = 0; for(int i = 0;i<m;i++){ cnt+=(okcolr[i].size()-1)*okcolr[i].size()/2; } for(int i = 0;i<m;i++){ cnt+=okcolr[i].size()*nocolr[i].size(); } for(int i = 0;i<m;i++){ for(int j = 0;j<nocolr[i].size();j++){ for(int k = j+2;k<nocolr[i].size();k++){ if(sum[k]-sum[j]+a[j]>=1) cnt++; } } } cnt++; return 0; }