C++ over Java, Have you made your decision yet ?
Difference between en2 and en3, changed 2 character(s)
Hi Coders,↵

I recently solved the problem called "Permutations" on CSES Problem set. It is the [
45th problem](https://cses.fi/problemset/task/1070/) in the list.↵

I started by writing the solution in Java, because I'm more proficient in Java. Here is the solution that I have written. For some reasons, my Java solution failed some test with **TLE(Time Limit Exceeded)** for the following inputs : **11542**, **1000000**, **906819**, **898673**, **719525**, etc.↵

~~~~~↵
import java.util.Scanner;↵

public class Permutations {↵
public static void main(String[] args) {↵
Scanner sc = new Scanner(System.in);↵
int n = sc.nextInt();↵

if (n == 1) {↵
System.out.println("1");↵
} else if (n < 4) {↵
System.out.println("NO SOLUTION");↵
} else if (n == 4) {↵
System.out.println("2 4 1 3");↵
} else {↵
for (int i = 1; i <= n; i += 2) {↵
System.out.print(i + " ");↵
}↵
for (int i = 2; i <= n; i += 2) {↵
System.out.print(i);↵
if (i + 2 <= n) {↵
System.out.print(" ");↵
} else {↵
System.out.println();↵
}↵
}↵
}↵
}↵
}↵
~~~~~↵

Now, because I'm learning C++ to become really good at Competitive programming, I wrtethe following code in C++ to address the same problem. Here is my C++ code:↵

~~~~~↵
#include <iostream>↵

using namespace std;↵

int main() {↵
    int n;↵
    cin >> n;↵
    ↵
    if (n == 1) {↵
        cout << 1 << endl;↵
    } else if (n < 4) {↵
        cout << "NO SOLUTION" << endl;↵
    } else if (n == 4) { ↵
        cout << "2 4 1 3" << "\n";↵
    } else {↵
        for (int i = 1; i <= n; i += 2) {↵
            cout << i << " ";↵
        }↵
        for (int i = 2; i <= n; i += 2) {↵
            cout << i;↵
            if (i + 2 <= n) {↵
                cout << " ";↵
            } else {↵
                cout << endl;↵
            }↵
        }↵
    }↵
}↵
~~~~~↵

At my surprise, all the tests passed with C++ code. Now I would like to understand the main reason behind why almost the same code passed all the tests in C++ and not in Java. I thought may I should have use the type long in Java, but I did not need that in C++.↵

Is there something that I need to understand? Please your advice is welcome to make me understand what happened.↵


History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English mason_24 2022-05-28 07:28:04 2 Tiny change: 't is the [4th problem' -> 't is the [5th problem'
en2 English mason_24 2022-05-28 07:26:47 102
en1 English mason_24 2022-05-28 07:26:16 2391 Initial revision (published)