Codeforces Round #280 (Div. 2) A,B,C,D

来源:互联网 发布:java 细粒度权限控制 编辑:程序博客网 时间:2024/05/21 08:46
A. Vanya and Cubes
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Vanya got n cubes. He decided to build a pyramid from them. Vanya wants to build the pyramid as follows: the top level of the pyramid must consist of1 cube, the second level must consist of 1 + 2 = 3 cubes, the third level must have 1 + 2 + 3 = 6 cubes, and so on. Thus, thei-th level of the pyramid must have 1 + 2 + ... + (i - 1) + i cubes.

Vanya wants to know what is the maximum height of the pyramid that he can make using the given cubes.

Input

The first line contains integer n (1 ≤ n ≤ 104) — the number of cubes given to Vanya.

Output

Print the maximum possible height of the pyramid in the single line.

Examples
Input
1
Output
1
Input
25
Output
4
题意:用cubes建金字塔,第一层需要1个cubes第二层需要(1+2)cubes,第三层需要(1+2+3)cubes....给你cubes数,求最多能建多少层
水题,只要找到规律n*(n+1)*(n+2)/6即可。
#include<cstdio>#include<cstdlib>#include<iostream>#include<stack>#include<queue>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<map>#include<set>#define mem(a,b) memset(a,b,sizeof(a))#define memmax(a) memset(a,0x3f,sizeof(a))#define pfn printf("\n")#define ll __int64#define mod 1000000007#define sf(a) scanf("%d",&a)#define sf64(a) scanf("%I64d",&a)#define sf2(a,b) scanf("%d%d",&a,&b)#define sf3(a,b,c) scanf("%d%d%d",&a,&b,&c)#define sf4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)#define sff(a) scanf("%f",&a)#define sfs(a) scanf("%s",a)#define sfs2(a,b) scanf("%s%s",a,b)#define sfs3(a,b,c) scanf("%s%s%s",a,b,c)#define sfc(a) scanf("%c",&a)#define str(a) strlen(a)#define debug printf("***\n")const double PI = acos(-1.0);const double e = exp(1.0);const int INF = 0x7fffffff;;template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }template<class T> inline T Min(T a, T b) { return a < b ? a : b; }template<class T> inline T Max(T a, T b) { return a > b ? a : b; }bool cmpbig(int a, int b){ return a>b; }bool cmpsmall(int a, int b){ return a<b; }using namespace std;int main(){//freopen("data.in", "r", stdin);int n,i;sf(n);int hegiht,ans=0;for (i = 1;; i++){ans = i*(i + 1)*(i + 2) / 6;if (ans > n)break;}printf("%d\n",i-1);return 0;}

B. Vanya and Lanterns
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Vanya walks late at night along a straight street of length l, lit by n lanterns. Consider the coordinate system with the beginning of the street corresponding to the point0, and its end corresponding to the point l. Then the i-th lantern is at the pointai. The lantern lights all points of the street that are at the distance of at mostd from it, where d is some positive number, common for all lanterns.

Vanya wonders: what is the minimum light radius d should the lanterns have to light the whole street?

Input

The first line contains two integers n,l (1 ≤ n ≤ 1000,1 ≤ l ≤ 109) — the number of lanterns and the length of the street respectively.

The next line contains n integers ai (0 ≤ ai ≤ l). Multiple lanterns can be located at the same point. The lanterns may be located at the ends of the street.

Output

Print the minimum light radius d, needed to light the whole street. The answer will be considered correct if its absolute or relative error doesn't exceed10 - 9.

Examples
Input
7 1515 5 3 7 9 14 0
Output
2.5000000000
Input
2 52 5
Output
2.0000000000
Note

Consider the second sample. At d = 2 the first lantern will light the segment[0, 4] of the street, and the second lantern will light segment[3, 5]. Thus, the whole street will be lit.

题意:有n个路灯和l长的路,需要路灯将路全照到,要求出最小的灯所照的半径(如路灯坐标为x,半径为d,则能照到范围(x-d,x+d))
思路:从左至右贪心一下即可。
#include<cstdio>#include<cstdlib>#include<iostream>#include<stack>#include<queue>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<map>#include<set>#define mem(a,b) memset(a,b,sizeof(a))#define memmax(a) memset(a,0x3f,sizeof(a))#define pfn printf("\n")#define ll __int64#define mod 1000000007#define sf(a) scanf("%d",&a)#define sf64(a) scanf("%I64d",&a)#define sf2(a,b) scanf("%d%d",&a,&b)#define sf3(a,b,c) scanf("%d%d%d",&a,&b,&c)#define sf4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)#define sff(a) scanf("%f",&a)#define sfs(a) scanf("%s",a)#define sfs2(a,b) scanf("%s%s",a,b)#define sfs3(a,b,c) scanf("%s%s%s",a,b,c)#define sfc(a) scanf("%c",&a)#define str(a) strlen(a)#define debug printf("***\n")const double PI = acos(-1.0);const double e = exp(1.0);const int INF = 0x7fffffff;;template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }template<class T> inline T Min(T a, T b) { return a < b ? a : b; }template<class T> inline T Max(T a, T b) { return a > b ? a : b; }bool cmpbig(int a, int b){ return a>b; }bool cmpsmall(int a, int b){ return a<b; }using namespace std;#define MAX 1000010int a[MAX];int main(){//freopen("data.in", "r", stdin);int n, l;while (~sf2(n, l)){int i;for (i = 0; i < n; i++)sf(a[i]);sort(a, a + n);double min_num = max(a[0]-0,l-a[n-1]);for (i = 1; i < n; i++)min_num = max(min_num, (a[i] - a[i - 1])*1.0/2);printf("%lf\n", min_num);}return 0;}
C. Vanya and Exams
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Vanya wants to pass n exams and get the academic scholarship. He will get the scholarship if the average grade mark for all the exams is at leastavg. The exam grade cannot exceed r. Vanya has passed the exams and got grade ai for thei-th exam. To increase the grade for the i-th exam by 1 point, Vanya must write bi essays. He can raise the exam grade multiple times.

What is the minimum number of essays that Vanya needs to write to get scholarship?

Input

The first line contains three integers n,r, avg (1 ≤ n ≤ 105,1 ≤ r ≤ 109,1 ≤ avg ≤ min(r, 106)) — the number of exams, the maximum grade and the required grade point average, respectively.

Each of the following n lines contains space-separated integersai andbi (1 ≤ ai ≤ r,1 ≤ bi ≤ 106).

Output

In the first line print the minimum number of essays.

Examples
Input
5 5 45 24 73 13 22 5
Output
4
Input
2 5 45 25 2
Output
0
Note

In the first sample Vanya can write 2 essays for the 3rd exam to raise his grade by 2 points and 2 essays for the 4th exam to raise his grade by 1 point.

In the second sample, Vanya doesn't need to write any essays as his general point average already is above average.

题意:有n门考试,最高得分r分,需要平均分avg,告诉你已经考过了n门考试,但是你平均分不够,可以通过写多篇文章提高该门考试分数,写一次得1分,可以写多次,求最少写文章篇数。

思路:排序一下所需写的文章篇数,然后贪心一下,就行了。

#include<cstdio>#include<cstdlib>#include<iostream>#include<stack>#include<queue>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<map>#include<set>#define mem(a,b) memset(a,b,sizeof(a))#define memmax(a) memset(a,0x3f,sizeof(a))#define pfn printf("\n")#define ll __int64#define mod 1000000007#define sf(a) scanf("%d",&a)#define sf64(a) scanf("%I64d",&a)#define sf264(a,b) scanf("%I64d%I64d",&a,&b)#define sf364(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)#define sf2(a,b) scanf("%d%d",&a,&b)#define sf3(a,b,c) scanf("%d%d%d",&a,&b,&c)#define sf4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)#define sff(a) scanf("%f",&a)#define sfs(a) scanf("%s",a)#define sfs2(a,b) scanf("%s%s",a,b)#define sfs3(a,b,c) scanf("%s%s%s",a,b,c)#define sfc(a) scanf("%c",&a)#define debug printf("***\n")const double PI = acos(-1.0);const double e = exp(1.0);const int INF = 0x7fffffff;;template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }template<class T> inline T Min(T a, T b) { return a < b ? a : b; }template<class T> inline T Max(T a, T b) { return a > b ? a : b; }bool cmpbig(int a, int b){ return a>b; }bool cmpsmall(int a, int b){ return a<b; }using namespace std;#define MAX 100010pair<ll, ll>a[MAX];typedef pair<ll, ll> P;bool cmp(P a, P b){if (a.second < b.second) return true;return false;}int main(){//freopen("data.in", "r", stdin);ll n, r, avg;while (~sf364(n, r, avg)){ll i,cnt=0,num=0;for (i = 0; i < n; i++){sf264(a[i].first, a[i].second);cnt += a[i].first;}i = 0;sort(a, a + n, cmp);while (n*avg > cnt){if (n*avg - cnt > r-a[i].first){num += (r - a[i].first)*a[i].second;cnt += (r - a[i].first);}else{//printf("%d\n", a[i].second);num += (n*avg - cnt)*a[i].second;break;}i++;}printf("%I64d\n", num);}return 0;}

D. Vanya and Computer Game
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Vanya and his friend Vova play a computer game where they need to destroy n monsters to pass a level. Vanya's character performs attack with frequencyx hits per second and Vova's character performs attack with frequencyy hits per second. Each character spends fixed time to raise a weapon and then he hits (the time to raise the weapon is1 / x seconds for the first character and 1 / y seconds for the second one). The i-th monster dies after he receivesai hits.

Vanya and Vova wonder who makes the last hit on each monster. If Vanya and Vova make the last hit at the same time, we assume that both of them have made the last hit.

Input

The first line contains three integers n,x,y (1 ≤ n ≤ 105,1 ≤ x, y ≤ 106) — the number of monsters, the frequency of Vanya's and Vova's attack, correspondingly.

Next n lines contain integers ai (1 ≤ ai ≤ 109) — the number of hits needed do destroy the i-th monster.

Output

Print n lines. In the i-th line print word "Vanya", if the last hit on thei-th monster was performed by Vanya, "Vova", if Vova performed the last hit, or "Both", if both boys performed it at the same time.

Examples
Input
4 3 21234
Output
VanyaVovaVanyaBoth
Input
2 1 112
Output
BothBoth
Note

In the first sample Vanya makes the first hit at time 1 / 3, Vova makes the second hit at time1 / 2, Vanya makes the third hit at time 2 / 3, and both boys make the fourth and fifth hit simultaneously at the time1.

In the second sample Vanya and Vova make the first and second hit simultaneously at time1.

题意:有n个怪物,vanya每秒打怪x下,vova每秒y下,间隔1/x和1/y,求最后一下是谁打的。

思路:求出一秒能打怪顺序,然后直接取模,就能A掉。

#include<cstdio>#include<cstdlib>#include<iostream>#include<stack>#include<queue>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<map>#include<set>#define mem(a,b) memset(a,b,sizeof(a))#define memmax(a) memset(a,0x3f,sizeof(a))#define pfn printf("\n")#define ll __int64#define mod 1000000007#define sf(a) scanf("%d",&a)#define sf64(a) scanf("%I64d",&a)#define sf264(a,b) scanf("%I64d%I64d",&a,&b)#define sf364(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)#define sf2(a,b) scanf("%d%d",&a,&b)#define sf3(a,b,c) scanf("%d%d%d",&a,&b,&c)#define sf4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)#define sff(a) scanf("%f",&a)#define sfs(a) scanf("%s",a)#define sfs2(a,b) scanf("%s%s",a,b)#define sfs3(a,b,c) scanf("%s%s%s",a,b,c)#define sfc(a) scanf("%c",&a)#define debug printf("***\n")const double PI = acos(-1.0);const double e = exp(1.0);const int INF = 0x7fffffff;;template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }template<class T> inline T Min(T a, T b) { return a < b ? a : b; }template<class T> inline T Max(T a, T b) { return a > b ? a : b; }bool cmpbig(int a, int b){ return a>b; }bool cmpsmall(int a, int b){ return a<b; }using namespace std;#define MAX 200010//pair<int, int>a[MAX];//typedef pair<int, int>P;//int gcd(int a, int b)//{//return b ? gcd(b, a%b) : a;//}//bool cmp(P a, P b)//{//return a.first < b.first;//}int gcd(int a, int b){return b ? gcd(b, a%b) : a;}map<ll, int>vis;int main(){//freopen("data.in", "r", stdin);int n, x, y;while (~sf3(n, x, y)){ll lcm1 = y / gcd(max(x, y), min(x, y)), lcm2 = x / gcd(max(x, y), min(x, y));ll pos1 = lcm1, pos2 = lcm2;int i;vis.clear();vis[0] = 3;for (i = 1;i<=x+y-1; i++){if (lcm1 < lcm2){vis[i] = 1;lcm1 += pos1;}else if (lcm1>lcm2){vis[i] = 2;lcm2 += pos2;}else if (lcm1==lcm2){vis[i] = 3;vis[i+1] = 3;lcm1 += pos1;lcm2 += pos2;i++;}}for (i = 0; i < n; i++){int num;sf(num);if (vis[num % (x + y)] == 0 || vis[num % (x + y)] == 3)printf("Both\n");else if (vis[num % (x + y)] == 1)printf("Vanya\n");elseprintf("Vova\n");}}return 0;}

这场题目比较水,其实感觉E题也可以做的,但exgcd没思路就GG了。







0 0