Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define MAX 131072
- using namespace std;
- const int NMAX = 100010;
- FILE *IN;
- int N;
- int v[NMAX];
- int sign, pos;
- char f[MAX];
- inline void Read(int &nr){
- sign = 0;
- nr = 0;
- while(f[pos] < '0' || f[pos] > '9'){
- if(f[pos] == '-') sign=1;
- pos++;
- if(pos == MAX)
- fread(f, MAX, 1, IN), pos = 0;
- }
- while(f[pos] >= '0' && f[pos] <= '9'){
- nr = 10 * nr + f[pos++] - '0';
- if(pos == MAX)
- fread(f, MAX, 1, IN), pos = 0;
- }
- if(sign) nr =- nr;
- }
- int main(){
- IN = fopen("rmq.in", "r");
- freopen("rmq.out", "w", stdout);
- Read(N);
- for(int i = 1; i <= N; i++)
- Read(v[i]);
- int aux;
- int imparPos = 1;
- for(int i = 1; i <= N; i++){
- for(int j = i + 1; j <= N; j++){
- if(v[j] % 2 == 1 && v[i] % 2 != 1){
- aux = v[i];
- v[i] = v[j];
- v[j] = aux;
- imparPos = i;
- }
- }
- }
- for(int f = imparPos; f > 1; f--){
- for(int i = 1; i < f; i++){
- if(v[i] > v[i + 1]){
- aux = v[i];
- v[i] = v[i + 1];
- v[i + 1] = aux;
- }
- }
- }
- for(int f = N; f > imparPos; f--){
- for(int i = imparPos + 1; i < f; i++){
- if(v[i] > v[i + 1]){
- aux = v[i];
- v[i] = v[i + 1];
- v[i + 1] = aux;
- }
- }
- }
- for(int i = 1; i <= N; i++)
- printf("%d ", v[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement