小缘的游戏
时间限制: 1 Sec 内存限制: 128 MB
题目描述
编故事编的好累,懒得编了,直接说了,给你一个n,然后输入n个数,问你这n个数可不可以通过部分加上一个数或者减去一个数使所有数都相等,如果可以输出jxust,不可以则输出ecjtujxnu
输入
输入一个数n
1<=n<=105
然后输入n个数。(多组输入)
输出
输出jxust或ecjtujxnu
样例输入
5
1 3 3 2 1
5
1 2 3 4 5
2
1 2
样例输出
jxust
ecjtujxnu
jxust
/*
unique函数类属性算法unique的作用是从输入序列中“删除”所有相邻的重复元素。该算法删除相邻的重复元素,然后重新排列输入范围内的元素,并且返回一个迭代器(容器的长度没变,只是元素顺序改变了),
表示无重复的值范围得结束。
vector<string>::iterator end_unique = unique(words.begin(), words.end());words.erase(end_unique, words.end());
在STL中unique函数是一个去重函数, unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除,是把重复的元素移到后面去了,然后依然保存到了原数组中,
然后 返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。若调用sort后,vector的对象的元素按次序排列如下:
sort jumps over quick red red slow the the turtle注意,words的大小并没有改变,依然保存着10个元素;只是这些元素的顺序改变了。
调用unique“删除”了相邻的重复值。给“删除”加上引号是因为unique实际上并没有删除任何元素,而是将无重复的元素复制到序列的前段,从而覆盖相邻的重复元素。
unique返回的迭代器指向超出无重复的元素范围末端的下一个位置。注意:算法不直接修改容器的大小。如果需要添加或删除元素,则必须使用容器操作。
*/
1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 using namespace std; 5 #define ll long long 6 const int N=1e5+10; 7 ll a[N]; 8 //unique(a,a+n); 9 int main() 10 { 11 int n; 12 while(cin >> n) 13 { 14 for(int i = 0; i < n; i++) 15 { 16 cin >> a[i]; 17 } 18 sort(a, a + n); 19 int ans = unique(a, a + n) - a; 20 if(ans <= 2) 21 { 22 cout << "jxust" << endl; 23 } 24 if(ans >3) 25 { 26 cout << "ecjtujxnu" << endl; 27 } 28 if(ans == 3) 29 { 30 if(a[2] - a[1] == a[1] - a[0]) 31 { 32 cout << "jxust" << endl; 33 } 34 else cout << "ecjtujxnu" << endl; 35 } 36 } 37 return 0; 38 }