# 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