代码写的有些丑(改来改去又变成 O(n^3) )
我的思路是吧每个客栈的色调分类,再根据咖啡店的区间价格统计符合的方案。
但是好像不太对(
#include <iostream>
using namespace std ;
int n , k , p , c ;
int colour , price[200010] ;
int b[51] , i ;
int FindMin(int a , int b){
int Min_price = price[a] ;
for(int x = a ; x <= b ; x++)
if(Min_price > price[x])
Min_price = price[x] ;
return Min_price ;
}
int main(){
cin >> n >> k >> p ;
int kind_colour[k][200010] ;
for(i = 1 ; i <= n ; i++){
cin >> colour >> price[i] ;
kind_colour[colour][b[colour]++] = i ;
}
for(i = 1 ; i <= k ; i++){
for(int j = 1 ; j <= b[i] ; j ++)
for(int l = 1 ; l <= b[i] - j + 1 ; l++)
if(FindMin(kind_colour[i][j] , kind_colour[i][l])<= p)
c++ ;
}
cout << c << endl ;
return 0 ;
}