50分小程序,写了2天…
题目在这里
一个单调队列,写的都是p=0的点,考试的时候要是弄到这些分的话……不说了……
羡慕AC的神犇啊,54行的满分程序,而我……
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using std::cin;
using std::sort;
int head_0=1,head_1=1,head_2=1;
int tail_0,tail_1,tail_2;
long long que[9100000],que_0[9100000],que_1[9100000],que_2[9100000];
int n,m,q,u,v,t;
int comp(long long ti,long long bi)
{
if(ti>bi) return 1;
return 0;
}
int max(long long a,long long b,long long c)
{
if(a<b)
if(b<c)
{
head_2++;
return c;
}
else
{
head_1++;
return b;
}
else
if(a>c)
{
head_0++;
return a;
}
else
{
head_2++;
return c;
}
}
int main()
{
freopen("earthworm.in","r",stdin);
freopen("earthworm.ans","w",stdout);
cin>>n>>m>>q>>u>>v>>t;
tail_0=n;
for(int i=1;i<=n;i++)
scanf("%d",&que_0[i]);
sort(que_0+1,que_0+n+1,comp);
for(int i=1;i<=m;i++)
{
int x,x1,x2;
x=max(que_0[head_0],que_1[head_1],que_2[head_2]);
que_1[i]=x*u/v;
que_2[i]=x-que_1[i];
if(i%t==0)
printf("%d ",x);
}
printf("\n");
for(int i=1;i<=n+m;i++)
{
que[i]=max(que_0[head_0],que_1[head_1],que_2[head_2]);
if(i%t==0) printf("%d ",que[i]);
}
return 0;
}
最后再膜一下sxb大神 orz orz