记录编号 |
329329 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2011]选择客栈 |
最终得分 |
100 |
用户昵称 |
123 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.232 s |
提交时间 |
2016-10-25 08:27:49 |
内存使用 |
94.17 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int ya[200000]={0},yb[200000]={0},q[60][200015]={0},ans;
int qw[60][200035]={0},zan[100]={0},yd[200035]={0};
int main(){
freopen ("hotel.in","r",stdin);
freopen ("hotel.out","w",stdout);
int a,b,c,e,d,f,g,h;
int n,k,p;
int x,y,z;
cin>>n>>k>>p;
ans=0;
h=0;
for (a=1;a<=n;a++)
{
cin>>ya[a]>>yb[a];
}
for (x=0;x<=k-1;x++)
{
z=0;
for (y=1;y<=n;y++)
{
if(ya[y]==x)
{
z=z+1;
}
qw[x][y]=z;
}
}
for (x=1;x<=n;x++)
{
if(yb[x]<=p)
yd[x+1]=x;
else
yd[x+1]=yd[x];
}
for (b=2;b<=n;b++)
{
h=0;
if(yb[b]<=p)
{
if(yd[b]!=0)
h=h+qw[ya[b]][b]-1;
}
if(yb[b]>p)
{
if(qw[ya[b]][yd[b]]!=0)
{
h=qw[ya[b]][yd[b]];
}
}
q[ya[b]][b]=q[ya[b]][b-1]+h;
for (f=0;f<=k-1;f++)
{
if(h!=0)
{
if(f!=ya[b])
q[f][b]=q[f][b-1];
}
else
{
q[f][b]=q[f][b-1];
}
}
}
for (g=0;g<=k-1;g++)
{
ans=ans+q[g][n];
}
cout<<ans;
return 0;
}