D - Little Elephant and Problem
2018-03-27 12:06
465 查看
The Little Elephant has got a problem — somebody has been touching his sorted by non-decreasing array a of length n and possibly swapped some elements of the array.
The Little Elephant doesn't want to call the police until he understands if he could have accidentally changed the array himself. He thinks that he could have accidentally changed array a, only if array a can be sorted in no more than one operation of swapping elements (not necessarily adjacent). That is, the Little Elephant could have accidentally swapped some two elements.
Help the Little Elephant, determine if he could have accidentally changed the array a, sorted by non-decreasing, himself.
Input The first line contains a single integer n (2 ≤ n ≤ 105) — the size of array a. The next line contains n positive integers, separated by single spaces and not exceeding 109, — array a.
Note that the elements of the array are not necessarily distinct numbers.
Output In a single line print "YES" (without the quotes) if the Little Elephant could have accidentally changed the array himself, and "NO" (without the quotes) otherwise.
Example Input
In the second sample we can sort the array if we swap elements 1 and 3, so we need 1 swap operation to sort the array. Thus, the answer is "YES4000
".
In the third sample we can't sort the array in more than one swap operation, so the answer is "NO".
题意及其解题过程:交换两个数能否使数据按照升序排序。用以数组xx[]存放,用数组yy[]排序,比较xx和yy中不相同的个数,如果等于0、1、2就输出YES,否则输出NO。
The Little Elephant doesn't want to call the police until he understands if he could have accidentally changed the array himself. He thinks that he could have accidentally changed array a, only if array a can be sorted in no more than one operation of swapping elements (not necessarily adjacent). That is, the Little Elephant could have accidentally swapped some two elements.
Help the Little Elephant, determine if he could have accidentally changed the array a, sorted by non-decreasing, himself.
Input The first line contains a single integer n (2 ≤ n ≤ 105) — the size of array a. The next line contains n positive integers, separated by single spaces and not exceeding 109, — array a.
Note that the elements of the array are not necessarily distinct numbers.
Output In a single line print "YES" (without the quotes) if the Little Elephant could have accidentally changed the array himself, and "NO" (without the quotes) otherwise.
Example Input
2 1 2Output
YESInput
3 3 2 1Output
YESInput
4 4 3 2 1Output
NONote In the first sample the array has already been sorted, so to sort it, we need 0 swap operations, that is not more than 1. Thus, the answer is "YES".
In the second sample we can sort the array if we swap elements 1 and 3, so we need 1 swap operation to sort the array. Thus, the answer is "YES4000
".
In the third sample we can't sort the array in more than one swap operation, so the answer is "NO".
题意及其解题过程:交换两个数能否使数据按照升序排序。用以数组xx[]存放,用数组yy[]排序,比较xx和yy中不相同的个数,如果等于0、1、2就输出YES,否则输出NO。
#include"stdio.h" #include"string.h" #include"stdlib.h" #include"math.h" #include"algorithm" using namespace std; int xx[100002]; int yy[100002]; int main() { int n,i; while(~scanf("%d",&n)) { int s=0; for(i=0;i<n;i++) { scanf("%d",&xx[i]); yy[i]=xx[i]; } sort(yy,yy+n); for(i=0;i<n;i++) { if(xx[i] != yy[i]) { s++; } } if(s==0||s==1||s==2) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
相关文章推荐
- A. Little Elephant and Problem
- AC日记——Little Elephant and Problem codeforces 221c
- Codeforces 221 C. Little Elephant and Problem
- CodeForces 220A Little Elephant and Problem
- Little Elephant and Problem
- codeforces 204(Div.1 A) Little Elephant and Interval(贪心)
- Codeforces Round #129 (Div. 1)B Little Elephant and Cards
- 【Code Forces】221D - Little Elephant and Array(线段树,思维做法)
- <codeforces>A. Little Elephant and Rozdil
- (Codeforces Round #136 (Div. 2))A. Little Elephant and Function(递归分析,简单)
- CF205E-Little Elephant and Furik and Rubik
- [Codeforces 204C] Little Elephant and Furik and Rubik (期望)
- Codeforces Round #136 (Div. 2) A. Little Elephant and Function
- Codechef Little Elephant and Painting (期望+动态规划)
- <codeforces>A. Little Elephant and Rozdil
- BZOJ4374 : Little Elephant and Boxes
- Codeforces 221 E. Little Elephant and Shifts
- (Codeforces Round #136 (Div. 2))A. Little Elephant and Function(递归分析,简单)
- codeforce 205C - Little Elephant and Interval
- Codeforces Round #136 (Div. 2) B. Little Elephant and Numbers