Fellow me on GitHub

ACM ICPC 2017 Warmup Contest 9 L

L. Sticky Situation

While on summer camp, you are playing a game of hide-and-seek in the forest. You need to designate a “safe zone”, where, if the players manage to sneak there without being detected,they beat the seeker. It is therefore of utmost importance that this zone is well-chosen.

image.png

 

 

 

You point towards a tree as a suggestion, but your fellow hide-and-seekers are not satisfied. After all, the tree has branches stretching far and wide, and it will be difficult to determine whether a player has reached the safe zone. They want a very specific demarcation for the safe zone. So, you tell them to go and find some sticks, of which you will use three to mark anon-degenerate triangle (i.e. with strictly positive area) next to the tree which will count as the safe zone. After a while they return with a variety of sticks, but you are unsure whether you can actually form a triangle with the available sticks.

 

Can you write a program that determines whether you can make a triangle with exactly three of the collected sticks?

 

Input

 

The first line contains a single integer N , with 3 ≤ N ≤ 20 000, the number of sticks collected. Then follows one line with Npositive integers, each less than 2^{60}260​​, the lengths of the sticks which your fellow campers have collected.

 

Output

 

Output a single line containing a single word: possible if you can make a non-degenerate triangle with three sticks of the provided lengths, and impossible if you can not. 

 

 

 

样例输入1

3
1 1 1

样例输出1

possible

样例输入2

5
3 1 10 5 15

样例输出2

impossible

题目来源

ACM ICPC 2017 Warmup Contest 9

 

问数组中是否存在3个数组成三角形。

 1 //2017-10-24
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 #define ll long long
 7 
 8 using namespace std;
 9 
10 const int N = 21000;
11 ll arr[N];
12 int n;
13 
14 int main()
15 {
16     while(~scanf("%d", &n)){
17         for(int i = 0; i < n; i++)
18             scanf("%lld", &arr[i]);
19         sort(arr, arr+n);
20         bool ok = false;
21         for(int i = 0; i < n-2; i++)
22           if(arr[i] + arr[i+1] > arr[i+2]){
23               ok = true;
24               break;
25           }
26         if(ok)printf("possible\n");
27         else printf("impossible\n");
28     }
29 
30     return 0;
31 }

 

posted @ 2017-10-24 15:07  Penn000  阅读(328)  评论(0编辑  收藏  举报