Aztec Pyramid |
Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:262144KB |
Total submit users: 60, Accepted users: 53 |
Problem 12905 : No special judgement |
Problem description |
|
Input |
The only line of the input file contains a single integer number n — the number of available blocks, including the first one (1 ≤ n ≤ 10^9). |
Output |
Output the height of the tallest stable pyramid that may be built out of n blocks. The height must be output in hunabs. |
Sample Input |
6 5 20 |
Sample Output |
2 1 3 |
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[10010];
bool flag;
int main()
{
int n,p,k,d,x;
while(scanf("%d%d%d%d",&n,&p,&k,&d)!=EOF)
{
flag=0;
memset(a,0,sizeof(a));
__int64 ans=0;
if(d==1&&k==n&&p%k==0)
{
flag=1;
for(int i=1;i<=k;i++)
a[i]=p/k;
for(int i=1;i<=n;i++)
cout<<a[i]<<endl;
continue;
}
if(d==1&&k<n)
{
flag=1;
for(int i=1;i<=k;i++)
{
a[i]=p/k;
//cout<<a[i]<<endl;
}
a[k+1]=p%k;
for(int i=1;i<=n;i++)
cout<<a[i]<<endl;
continue;
}
for(int i=1;i<=d;i++)
{
a[i]=d-i;
ans+=a[i];
}
if(p-ans>=0)
{
if(d!=1)
{
flag=1;
a[1]+=p-ans;
}
}
if(flag)
{
for(int i=1;i<=n;i++)
cout<<a[i]<<endl;
}
else
cout<<"Wrong information"<<endl;
}
return 0;
}