Codeforces 451B
2014-07-27 15:30
218 查看
Being a programmer, you like arrays a lot. For your birthday, your friends have given you an array
a consisting of n
distinct integers.
Unfortunately, the size of a is too small. You want a bigger array! Your friends agree to give you a bigger array, but only if you are able to answer the following question correctly: is it possible to sort the array
a (in increasing order) by reversing
exactly one segment of a? See definitions of segment and reversing in the notes.
Input
The first line of the input contains an integer n (1 ≤ n ≤ 105) — the size of array
a.
The second line contains n distinct space-separated integers:
a[1], a[2], ..., a[n] (1 ≤ a[i] ≤ 109).
Output
Print "yes" or "no" (without quotes), depending on the answer.
If your answer is "yes", then also print two space-separated integers denoting start and end (start must not be greater than end) indices of the segment to be reversed. If there are multiple ways of selecting these
indices, print any of them.
Sample test(s)
Input
Output
Input
Output
Input
Output
Input
Output
这道题用模拟就可以了,直接上代码了。
a consisting of n
distinct integers.
Unfortunately, the size of a is too small. You want a bigger array! Your friends agree to give you a bigger array, but only if you are able to answer the following question correctly: is it possible to sort the array
a (in increasing order) by reversing
exactly one segment of a? See definitions of segment and reversing in the notes.
Input
The first line of the input contains an integer n (1 ≤ n ≤ 105) — the size of array
a.
The second line contains n distinct space-separated integers:
a[1], a[2], ..., a[n] (1 ≤ a[i] ≤ 109).
Output
Print "yes" or "no" (without quotes), depending on the answer.
If your answer is "yes", then also print two space-separated integers denoting start and end (start must not be greater than end) indices of the segment to be reversed. If there are multiple ways of selecting these
indices, print any of them.
Sample test(s)
Input
3 3 2 1
Output
yes 1 3
Input
4 2 1 3 4
Output
yes 1 2
Input
4 3 1 2 4
Output
no
Input
2 1 2
Output
yes 1 1
这道题用模拟就可以了,直接上代码了。
#include <cstdio> #include <algorithm> using namespace std; const int maxn = 100010; struct Node{ int val,id; bool operator < (const Node& rhs) const{ return val < rhs.val; } }node[maxn]; int main(){ int n,l = -1,r; bool flag = 1; scanf("%d",&n); for(int i = 1;i <= n;i++){ scanf("%d",&node[i].val); node[i].id = i; } sort(node+1,node+n+1); node[n+1].id = -1; for(int i = 1;i <= n;i++){ if(node[i].id != i){ l = i; break; } } if(l == -1){ printf("yes\n1 1\n"); return 0; } for(int i = l;i <= n;i++){ if(node[i].id - node[i+1].id != 1){ r = i; break; } } for(int i = r+1;i <= n;i++){ if(node[i].id != i){ flag = false; break; } } if(flag) printf("yes\n%d %d\n",l,r); else printf("no\n"); return 0; }
相关文章推荐
- CodeForces 451B Sort the Array
- CodeForces 451B Sort the Array
- CodeForces 451B
- codeforces 451B Sort the Array
- Codeforces 451B Sort the Array
- CodeForces 451B 模拟
- [Codeforces 451B] Sort the Array (实现)
- Treasure - CodeForces 494 A 水题
- CodeForces 55D Beautiful numbers(数位dp&&离散化)
- day6 CodeForces 689B Mike and Shortcuts
- 【Codeforces 767 A. Snacktower】
- codeforces 165E Compatible Numbers(位运算)【模板】
- codeforces 899F Letters Removing set+树状数组
- Codeforces 496E
- CodeForces 625C K-special Tables
- CodeForces 337D——Book of Evil(数据结构)
- Codeforces 767"B" The Queue 模拟
- CodeForces -337A:Puzzles(水)
- Codeforces 891A Pride (dp & 数学 & 贪心 & 暴力)
- Codeforces 490F Treeland Tour 树上的最长上升子序列