n = int(input())a = list(map(int, input().split()))m = int(input())for _ in range(m): i, j = map(int, input().split()) i -= 1 j -= 1 if a[i] > a[j]: a[i], a[j] = a[j], a[i] # 튜플로 한 번에 맞바꾼다 print("x", end="") # end=""라야 줄을 바꾸지 않는다 else: print(".", end="")print() # 표시 줄을 끝낸다print(*a)print("整列済み" if all(a[k] <= a[k + 1] for k in range(n - 1)) else "未整列")
JavaScriptmain.js · 18 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const n = Number(lines[0]);const a = lines[1].trim().split(/\s+/).map(Number);const m = Number(lines[2]);for (let k = 0; k < m; k++) { const [i, j] = lines[3 + k].trim().split(/\s+/).map((v) => Number(v) - 1); if (a[i] > a[j]) { [a[i], a[j]] = [a[j], a[i]]; // 구조 분해로 맞바꾼다 process.stdout.write("x"); // console.log와 달리 줄을 바꾸지 않는다 } else { process.stdout.write("."); }}process.stdout.write("\n");let sorted = true;for (let k = 0; k + 1 < n; k++) if (a[k] > a[k + 1]) sorted = false;console.log(a.join(" "));console.log(sorted ? "整列済み" : "未整列");
TypeScriptmain.ts · 19 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const n = Number(lines[0]);const a: number[] = lines[1].trim().split(/\s+/).map(Number);const m = Number(lines[2]);for (let k = 0; k < m; k++) { const [i, j] = lines[3 + k].trim().split(/\s+/).map((v) => Number(v) - 1); if (a[i] > a[j]) { [a[i], a[j]] = [a[j], a[i]]; // 구조 분해로 맞바꾼다 process.stdout.write("x"); // console.log와 달리 줄을 바꾸지 않는다 } else { process.stdout.write("."); }}process.stdout.write("\n");let sorted = true;for (let k = 0; k + 1 < n; k++) if (a[k] > a[k + 1]) sorted = false;console.log(a.join(" "));console.log(sorted ? "整列済み" : "未整列");
JavaMain.java · 39 行
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(System.out); int n = Integer.parseInt(in.readLine().trim()); int[] a = new int[n]; StringTokenizer st = new StringTokenizer(in.readLine()); for (int k = 0; k < n; k++) a[k] = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(in.readLine().trim()); for (int k = 0; k < m; k++) { st = new StringTokenizer(in.readLine()); int i = Integer.parseInt(st.nextToken()) - 1, j = Integer.parseInt(st.nextToken()) - 1; if (a[i] > a[j]) { int t = a[i]; // 임시 변수에 하나를 맡겨 두고 맞바꾼다 a[i] = a[j]; a[j] = t; out.print('x'); // print는 줄을 바꾸지 않는다(println은 바꾼다) } else { out.print('.'); } } out.println(); boolean sorted = true; StringBuilder row = new StringBuilder(); for (int k = 0; k < n; k++) { if (k > 0) row.append(' '); row.append(a[k]); if (k + 1 < n && a[k] > a[k + 1]) sorted = false; } out.println(row); out.println(sorted ? "整列済み" : "未整列"); out.flush(); }}
C#Main.cs · 31 行
using System;using System.Linq;class Program{ static void Main() { int n = int.Parse(Console.ReadLine()); int[] a = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); int m = int.Parse(Console.ReadLine()); for (int k = 0; k < m; k++) { int[] ij = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); int i = ij[0] - 1, j = ij[1] - 1; if (a[i] > a[j]) { (a[i], a[j]) = (a[j], a[i]); // 튜플로 맞바꾼다 Console.Write('x'); // Write는 줄을 바꾸지 않는다(WriteLine은 바꾼다) } else { Console.Write('.'); } } Console.WriteLine(); bool sorted = true; for (int k = 0; k + 1 < n; k++) if (a[k] > a[k + 1]) sorted = false; Console.WriteLine(string.Join(" ", a)); Console.WriteLine(sorted ? "整列済み" : "未整列"); }}
C++main.cpp · 25 行
#include <algorithm>#include <iostream>#include <utility>#include <vector>int main() { int n, m; std::cin >> n; std::vector<int> a(n); for (int& v : a) std::cin >> v; std::cin >> m; for (int k = 0; k < m; k++) { int i, j; std::cin >> i >> j; if (a[i - 1] > a[j - 1]) { std::swap(a[i - 1], a[j - 1]); // 표준 라이브러리가 맞바꿔 준다 std::cout << 'x'; // endl이나 '\n'을 붙이지 않으면 줄이 이어진다 } else { std::cout << '.'; } } std::cout << '\n'; for (int k = 0; k < n; k++) std::cout << (k ? " " : "") << a[k]; std::cout << '\n' << (std::is_sorted(a.begin(), a.end()) ? "整列済み" : "未整列") << '\n';}
Cmain.c · 32 行
#include <stdbool.h>#include <stdio.h>int main(void) { int n, m; int a[100]; scanf("%d", &n); for (int k = 0; k < n; k++) scanf("%d", &a[k]); scanf("%d", &m); for (int k = 0; k < m; k++) { int i, j; scanf("%d %d", &i, &j); i--; j--; if (a[i] > a[j]) { int t = a[i]; /* 임시 변수에 하나를 맡겨 두고 맞바꾼다 */ a[i] = a[j]; a[j] = t; putchar('x'); /* 글자 하나만, 줄바꿈 없이 */ } else { putchar('.'); } } putchar('\n'); bool sorted = true; for (int k = 0; k < n; k++) { printf(k ? " %d" : "%d", a[k]); if (k + 1 < n && a[k] > a[k + 1]) sorted = false; } printf("\n%s\n", sorted ? "整列済み" : "未整列"); return 0;}
Craykonmain.cray · 31 行
n = コンソール.行読み().数に();a = コンソール.数読み();m = コンソール.行読み().数に();繰り返す (k = 0; k < m; k++){ ij = コンソール.数読み(); i = ij[0] - 1; j = ij[1] - 1; もし (a[i] > a[j]) { t = a[i]; // 임시 변수에 하나를 맡겨 두고 맞바꾼다 a[i] = a[j]; a[j] = t; コンソール.続けて書く("x"); // 이어쓰기는 줄을 바꾸지 않는다 } でなければ { コンソール.続けて書く("."); }}コンソール.書く(""); // 표시 줄을 끝낸다정렬됨 = 真;繰り返す (k = 0; k + 1 < n; k++){ もし (a[k] > a[k + 1]) { 정렬됨 = 偽; }}コンソール.書く(a);コンソール.書く(정렬됨 ? "整列済み" : "未整列");