思路:
我们可以直接贪心,设置一个数组,来记录当前栅栏状态,每次如果这个栅栏空了,那么其它牛就可以进来吃了。
记得先要排序
c o d e code code
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
int a[100000][3];
int ans[100000];
struct node
{
int x, y;
}xx[100000];
bool cmp(node x, node y)
{
return x.x<y.x;
}
int main()
{
scanf("%d", &n);
int m=0;
for(int i=1; i<=n; i++)
scanf("%d%d", &xx[i].x, &xx[i].y);
sort(xx+1, xx+n+1, cmp);
for(int i=1; i<=n; i++)
{
int x, y, flag=0;
x=xx[i].x, y=xx[i].y;
for(int j=1; j<=m; j++)
{
if(a[j][2]<x)
{
flag=1;
a[j][1]=x;
a[j][2]=y;
ans[i]=j;
break;
}
}
if(flag==0)
{
m++;
a[m][1]=x;
a[m][2]=y;
ans[i]=m;
}
}
printf("%d\n", m);
for(int i=1; i<=n; i++)
printf("%d\n", ans[i]);
}