题目链接:点击打开链接
Little boy Valera studies an algorithm of sorting an integer array. After studying the theory, he went on to the practical tasks. As a result, he wrote a program that sorts an array of n integers a1, a2, ..., an in the non-decreasing order. The pseudocode of the program, written by Valera, is given below. The input of the program gets number n and array a.
loop integer variable i from 1 to n - 1 loop integer variable j from i to n - 1 if (aj > aj + 1), then swap the values of elements aj and aj + 1
But Valera could have made a mistake, because he hasn't yet fully learned the sorting algorithm. If Valera made a mistake in his program, you need to give a counter-example that makes his program work improperly (that is, the example that makes the program sort the array not in the non-decreasing order). If such example for the given value of n doesn't exist, print -1.
You've got a single integer n (1 ≤ n ≤ 50) — the size of the sorted array.
Print n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 100) — the counter-example, for which Valera's algorithm won't work correctly. If the counter-example that meets the described conditions is impossible to give, print -1.
If there are several counter-examples, consisting of n numbers, you are allowed to print any of them.
1
-1
思路:模拟一下可以得到,当n为1,2时才能正确排序
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a[1000];
int main()
{
while(~scanf("%d",&n))
{
if(n==1||n==2)
{
puts("-1");
continue;
}
for(int i=n;i>0;i--)
{
printf(i==1?"%d\n":"%d ",i);
}
}
return 0;
}
题目链接:点击打开链接
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
int main()
{
while(~scanf("%d",&n))
{
int ans=0;
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
ans+=x;
}
if(ans%n==0)
printf("%d\n",n);
else
printf("%d\n",n-1);
}
return 0;
}
题目链接:点击打开链接
General Payne has a battalion of n soldiers. The soldiers' beauty contest is coming up, it will last for k days. Payne decided that his battalion will participate in the pageant. Now he has choose the participants.
All soldiers in the battalion have different beauty that is represented by a positive integer. The value ai represents the beauty of the i-th soldier.
On each of k days Generals has to send a detachment of soldiers to the pageant. The beauty of the detachment is the sum of the beauties of the soldiers, who are part of this detachment. Payne wants to surprise the jury of the beauty pageant, so each of k days the beauty of the sent detachment should be unique. In other words, all k beauties of the sent detachments must be distinct numbers.
Help Payne choose k detachments of different beauties for the pageant. Please note that Payne cannot just forget to send soldiers on one day, that is, the detachment of soldiers he sends to the pageant should never be empty.
The first line contains two integers n, k (1 ≤ n ≤ 50; 1 ≤ k ≤ ) — the number of soldiers and the number of days in the pageant, correspondingly. The second line contains space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 107) — the beauties of the battalion soldiers.
It is guaranteed that Payne's battalion doesn't have two soldiers with the same beauty.
Print k lines: in the i-th line print the description of the detachment that will participate in the pageant on the i-th day. The description consists of integer ci (1 ≤ ci ≤ n) — the number of soldiers in the detachment on the i-th day of the pageant and ci distinct integersp1, i, p2, i, ..., pci, i — the beauties of the soldiers in the detachment on the i-th day of the pageant. The beauties of the soldiers are allowed to print in any order.
Separate numbers on the lines by spaces. It is guaranteed that there is the solution that meets the problem conditions. If there are multiple solutions, print any of them.
3 3 1 2 3
1 1 1 2 2 3 2
2 1 7 12
1 12
思路:降序排列后,先一一输出,再两两输出........可以保证每次输出的和都不同
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,k;
int a[55];
bool cmp(int x,int y)
{
return x>y;
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
for(int i=1;i<=n;i++)
scanf("%d",a+i);
sort(a+1,a+n+1,cmp);
int t=1,cnt=1;
while(t<=k)
{
for(int i=cnt;i<=n;i++)
{
printf("%d ",cnt);
for(int j=1;j<cnt;j++)
{
printf("%d ",a[j]);
}
printf("%d\n",a[i]);
t++;
if(t>k) break;
}
cnt++;
}
}
return 0;
}