您的位置:首页 > 产品设计 > UI/UE

Codeforces Beta Round #85 (Div. 1 Only) A. Petya and Inequiations 贪心

2015-11-20 16:43 651 查看

A. Petya and Inequiations

Time Limit: 20 Sec

Memory Limit: 256 MB

题目连接

http://codeforces.com/contest/111/problem/A

Description

Little Petya loves inequations. Help him find n positive integers a1, a2, ..., an, such that the following two conditions are satisfied:

a12 + a22 + ... + an2 ≥ x

a1 + a2 + ... + an ≤ y

Input

The first line contains three space-separated integers n, x and y (1 ≤ n ≤ 105, 1 ≤ x ≤ 1012, 1 ≤ y ≤ 106).

Please do not use the %lld specificator to read or write 64-bit integers in С++. It is recommended to use cin, cout streams or the %I64d specificator.

Output

Print n positive integers that satisfy the conditions, one integer per line. If such numbers do not exist, print a single number "-1". If there are several solutions, print any of them.

Sample Input

5 15 15

Sample Output

4
4
1
1
2

HINT

题意

让你找n个数,使其满足

a1^2+a2^2...+an^2>=x

a1+a2+...+an<=y

找不到输出-1

题解:

贪心一下,我们让a1-an-1都令为1,然后剩下的an我们就直接暴力枚举就好了~

代码

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;

int main()
{
int n;long long x,y;
cin>>n>>x>>y;
x-=(n-1);
y-=(n-1);
if(y<=0){return puts("-1");}
int flag = 0;
long long t;
for(int i=1;i<=y;i++)
{
t = i;
if(t>y)
return puts("-1");
if(t*t>=x)
{
flag = 1;
break;
}
}
if(flag==0)
return puts("-1");
for(int i=1;i<=n-1;i++)
printf("1\n");
printf("%d\n",t);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: