300573: CF109D. Lucky Sorting

Memory Limit:256 MB Time Limit:3 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Lucky Sorting

题意翻译

## 题目描述 现在你有一个长度为$n$的数列,现在你要把他排成一个不递减的数列,想要交换两个数必须满足:其中至少有一个数是幸运数字. 这里对于幸运数字的定义是:只由$4$和$7$组成的数字,如:$47,744,4$,但是$5,17,467$就不是幸运数字. 如果不能达到要求,输出$-1$,否则输出任意一种交换方案,注意:你不需要最小化交换次数. ## 输入格式 第一行一个正整数$n$,第二行$n$个正整数,表示这个数列. ## 输出格式 - 如果不能达到要求,输出$−1$ - 如果可以,第一行输出一个$k$,表示交换次数,注意$0 \le k\le 2n$,接下来$k$行,每行两个正整数$i,j$,表示这一次交换$a_i,a_j$ ## 数据范围 $n \le 10^5$

题目描述

Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal representations contain only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not. Petya got an array consisting of $ n $ numbers, it is the gift for his birthday. Now he wants to sort it in the non-decreasing order. However, a usual sorting is boring to perform, that's why Petya invented the following limitation: one can swap any two numbers but only if at least one of them is lucky. Your task is to sort the array according to the specified limitation. Find any possible sequence of the swaps (the number of operations in the sequence should not exceed $ 2n $ ).

输入输出格式

输入格式


The first line contains an integer $ n $ ( $ 1<=n<=10^{5} $ ) — the number of elements in the array. The second line contains $ n $ positive integers, not exceeding $ 10^{9} $ — the array that needs to be sorted in the non-decreasing order.

输出格式


On the first line print number $ k $ ( $ 0<=k<=2n $ ) — the number of the swaps in the sorting. On the following $ k $ lines print one pair of distinct numbers (a pair per line) — the indexes of elements to swap. The numbers in the array are numbered starting from 1. If it is impossible to sort the given sequence, print the single number -1. If there are several solutions, output any. Note that you don't have to minimize $ k $ . Any sorting with no more than $ 2n $ swaps is accepted.

输入输出样例

输入样例 #1

2
4 7

输出样例 #1

0

输入样例 #2

3
4 2 1

输出样例 #2

1
1 3

输入样例 #3

7
77 66 55 44 33 22 11

输出样例 #3

7
1 7
7 2
2 6
6 7
3 4
5 3
4 5

Input

题意翻译

## 题目描述 现在你有一个长度为$n$的数列,现在你要把他排成一个不递减的数列,想要交换两个数必须满足:其中至少有一个数是幸运数字. 这里对于幸运数字的定义是:只由$4$和$7$组成的数字,如:$47,744,4$,但是$5,17,467$就不是幸运数字. 如果不能达到要求,输出$-1$,否则输出任意一种交换方案,注意:你不需要最小化交换次数. ## 输入格式 第一行一个正整数$n$,第二行$n$个正整数,表示这个数列. ## 输出格式 - 如果不能达到要求,输出$−1$ - 如果可以,第一行输出一个$k$,表示交换次数,注意$0 \le k\le 2n$,接下来$k$行,每行两个正整数$i,j$,表示这一次交换$a_i,a_j$ ## 数据范围 $n \le 10^5$

加入题单

算法标签: