Description
小爱整天收到花。她有N个花瓶标号从0到N-1。如果她收到F朵花,她会选择一个花瓶A,尝试去放花进去那个花瓶。如果那个花瓶已经有花,她就顺序地找下一个,直到所有花都放完或者后面没有花瓶了。有时她会清理花瓶,把花瓶A到B(A<=B)之间的花全扔了。
题解
暴力直接跑90分
暴力+o3 500+ms
正解是线段树,不过我这个蒟蒻肯定是不会打的
代码
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,ans,k,x,y,last,c,v[50010];
__attribute__((optimize("-O3")))
int main()
{
freopen("vase09.in","r",stdin);
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d%d%d",&k,&x,&y);
if (k==1)
{
x++; k=x; c=y; last=0;
while (y!=0&&k<=n)
{
if (v[k]==0&&c==y)
{
printf("%d ",k-1);
v[k]=1;
last=k;
y--;
}
else if (v[k]==0)
{
v[k]=1;
last=k;
y--;
}
k++;
}
if (last!=0) printf("%d\n",last-1);
else printf("Can not put any one.\n");
}
else
{
x++;y++;ans=0;
for (int i=x;i<=y;i++)
{
ans+=v[i];
v[i]=0;
}
printf("%d\n",ans);
}
}
return 0;
}