Codeforces Round #359 (Div. 2) B
2016-09-04 16:00
453 查看
B. Little Robber Girl's Zoo
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Little Robber Girl likes to scare animals in her zoo for fun. She decided to arrange the animals in a row in the order of non-decreasing height. However, the animals were so scared that they couldn't stay in the right places.
The robber girl was angry at first, but then she decided to arrange the animals herself. She repeatedly names numbers l and r such
thatr - l + 1 is even. After that animals that occupy positions between l and r inclusively
are rearranged as follows: the animal at position lswaps places with the animal at position l + 1,
the animal l + 2 swaps with the animal l + 3,
..., finally, the animal at position r - 1 swaps with the animal r.
Help the robber girl to arrange the animals in the order of non-decreasing height. You should name at most 20 000 segments, since
otherwise the robber girl will become bored and will start scaring the animals again.
Input
The first line contains a single integer n (1 ≤ n ≤ 100) —
number of animals in the robber girl's zoo.
The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 109),
where ai is the height of
the animal occupying the i-th place.
Output
Print the sequence of operations that will rearrange the animals by non-decreasing height.
The output should contain several lines, i-th of the lines should contain two space-separated integers li and ri (1 ≤ li < ri ≤ n) —
descriptions of segments the robber girl should name. The segments should be described in the order the operations are performed.
The number of operations should not exceed 20 000.
If the animals are arranged correctly from the start, you are allowed to output nothing.
Examples
input
output
input
output
input
output
Note
Note that you don't have to minimize the number of operations. Any solution that performs at most 20 000 operations is allowed.
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Little Robber Girl likes to scare animals in her zoo for fun. She decided to arrange the animals in a row in the order of non-decreasing height. However, the animals were so scared that they couldn't stay in the right places.
The robber girl was angry at first, but then she decided to arrange the animals herself. She repeatedly names numbers l and r such
thatr - l + 1 is even. After that animals that occupy positions between l and r inclusively
are rearranged as follows: the animal at position lswaps places with the animal at position l + 1,
the animal l + 2 swaps with the animal l + 3,
..., finally, the animal at position r - 1 swaps with the animal r.
Help the robber girl to arrange the animals in the order of non-decreasing height. You should name at most 20 000 segments, since
otherwise the robber girl will become bored and will start scaring the animals again.
Input
The first line contains a single integer n (1 ≤ n ≤ 100) —
number of animals in the robber girl's zoo.
The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 109),
where ai is the height of
the animal occupying the i-th place.
Output
Print the sequence of operations that will rearrange the animals by non-decreasing height.
The output should contain several lines, i-th of the lines should contain two space-separated integers li and ri (1 ≤ li < ri ≤ n) —
descriptions of segments the robber girl should name. The segments should be described in the order the operations are performed.
The number of operations should not exceed 20 000.
If the animals are arranged correctly from the start, you are allowed to output nothing.
Examples
input
4 2 1 4 3
output
1 4
input
7 36 28 57 39 66 69 68
output
1 46 7
input
5 1 2 1 2 1
output
2 5
3 4
1 41 4
Note
Note that you don't have to minimize the number of operations. Any solution that performs at most 20 000 operations is allowed.
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; int a[105],n; int main() { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=n; i>=1; i--) { for(int j=1; j<i; j++) { if(a[j]>a[j+1]) { swap(a[j],a[j+1]); printf("%d %d\n",j,j+1); } } } return 0; }
相关文章推荐
- Photoshop纹理制作——毛发纹理
- Android工具类--SD卡信息类
- 排序算法集合 - 4
- 第三章 進程管理
- 第二章 從內核出發
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 【JSP笔记】第一章 JAVA WEB简介
- Python日记——nginx+Gunicorn部署你的Flask项目
- 拖动条 SeekBar 实例
- 【牛客网】矩阵中的路径
- MyBatis学习之三:动态SQL语句
- GDB调试程序
- [Lintcode]Container With Most Water
- Android Dialog的 WindowLeaked窗体泄露异常
- spring的事务配置详解
- SVM边学边总结系列——非线性可分情况
- 数组形参2
- 期货交易流程
- POJ 2236 Wireless Network 【并查集】
- JavaSrcipt的Object.keys()