C++ over Java, Have you made your decision yet ?

Правка en1, от mason_24, 2022-05-28 07:26:16

C++ over Java, Have you made your decision yet ?

Hi Coders,

I recently solved the problem called "Permutations" on CSES Problem set. It is the 4th problem 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.

Теги c++, java, permutations, cses

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en3 Английский mason_24 2022-05-28 07:28:04 2 Tiny change: 't is the [4th problem' -> 't is the [5th problem'
en2 Английский mason_24 2022-05-28 07:26:47 102
en1 Английский mason_24 2022-05-28 07:26:16 2391 Initial revision (published)