Why my C++ code gave TLE and C code got accepted

Yesterday, in cook off I used c++(14) to solve the ODDSUM question , it gave TLE and then i wrote the same code in C and it got accepted !!

Here is my C code:–

#include <stdio.h>

void solve()
{
    long long int n, sum = 0;
    scanf("%lld",&n);
    if (n == 1 || n == 2)
    {
        printf("%lld\n",1);
        return;
    }
    else if (n > 2)
    {
        sum = ((n-2) * (n -1)) + 1;
        printf("%lld\n",sum);
        return;
    }
}
int main()
{
    long long int t;
    scanf("%lld",&t);
    for (int it = 1; it <= t; it++)
    {
        solve();
    }
    return 0;
}

And this is my c++ code:—

#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <complex>
#include <queue>
#include <set>
#include <unordered_set>
#include <list>
#include <chrono>
#include <random>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <unordered_map>
#include <stack>
#include <iomanip>
#include <fstream>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> p32;
typedef pair<ll, ll> p64;
typedef pair<double, double> pdd;
typedef vector<ll> v64;
typedef vector<int> v32;
typedef vector<vector<int>> vv32;
typedef vector<vector<ll>> vv64;
typedef vector<vector<p64>> vvp64;
typedef vector<p64> vp64;
typedef vector<p32> vp32;
ll MOD = 1000000007;
double eps = 1e-12;
#define forn(i, n) for (ll i = 0; i < n; i++)
#define forsn(i, s, e) for (ll i = s; i < e; i++)
#define rforn(i, s) for (ll i = s; i >= 0; i--)
#define rforsn(i, s, e) for (ll i = s; i >= e; i--)
#define ln "\n"
#define dbg(x) cout << #x << " = " << x << ln
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define INF 2e18
#define fast_cin()                    \
    ios_base::sync_with_stdio(false); \
    cin.tie(NULL);                    \
    cout.tie(NULL)
#define all(x) (x).begin(), (x).end()
#define al(arr, n) arr, arr + n
#define sz(x) ((ll)(x).size())

void solve()
{
    ll n, sum = 0;
    cin >> n;
    if (n == 1 || n == 2)
    {
        cout << 1 << endl;
        return;
    }
    else if (n > 2)
    {
        sum = ((n-2) * (n -1)) + 1;
        cout << sum << endl;
        return;
    }
}
int main()
{
    fast_cin();
    ll t;
    cin >> t;
    for (int it = 1; it <= t; it++)
    {
        solve();
    }
    return 0;
}

Why did this happen ? Plz help!!

2 Likes

Some advice prefer using ‘\n’ instead of endl bcoz endl flushes the buffer which takes time and minimize use of * % and / in large input bcoz these arithmetic operation are costly. you can do n + n instead of 2 * n.

1 Like