记录编号 34099 评测结果 AAAAAAAAAA
题目名称 [NOIP 2011]选择客栈 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.112 s
提交时间 2011-11-29 19:56:37 内存使用 1.84 MiB
显示代码纯文本
#include<fstream>
using namespace std;
ifstream fin("hotel.in");
ofstream fout("hotel.out");

int n,p,k;
class Info
{
public:
	int Color,Price;
}in[200001];

int f[51];
int pointer[51];
//pointer[i]:当前色调为i的旅店之前有多少
//满足题意个匹配
int before=1;
//before:目前最接近当前位置的满足
//要求的位置
int main()
{
int i,j;
	fin>>n>>k>>p;
	for(i=1;i<=n;i++)
		fin>>in[i].Color>>in[i].Price;
	int s=0;
	pointer[in[1].Color]=1;
	for(i=1;i<=n;i++)
	{
		if(before!=i){
			if(in[i].Price <= p)
			{
				for(j=before+1; j<=i ;j++)
					pointer[in[j].Color]++;
				before = i;
				s=pointer[in[i].Color]-1;
			}
			else
				s=pointer[in[i].Color];
		}
		f[in[i].Color]+=s;
	}
	int Sum=0;
	for(i=0;i<k;i++)
		Sum+=f[i];
	fout<<Sum<<endl;
	
	fin.close();
	fout.close();
	return 0;
}