Problem p00081 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <algorithm>
#include <bitset>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
#define X first
#define Y second
#define pb push_back
#define rep(X, Y) for (int(X) = 0; (X) < (Y); ++(X))
#define rrep(X, Y) for (int(X) = (Y - 1); (X) >= 0; --(X))
#define repe(X, Y) for ((X) = 0; (X) < (Y); ++(X))
#define peat(X, Y) for (; (X) < (Y); ++(X))
#define all(X) (X).begin(), (X).end()
#define rall(X) (X).rbegin(), (X).rend()

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
template <class T> ostream &operator<<(ostream &os, const vector<T> &t) {
  os << "{";
  rep(i, t.size()) { os << t[i] << ","; }
  os << "}" << endl;
  return os;
}
template <class S, class T>
ostream &operator<<(ostream &os, const pair<S, T> &t) {
  return os << "(" << t.first << "," << t.second << ")";
}
#define re real()
#define im imag()

typedef complex<double> P;
typedef pair<P, P> L; // sX+tY
double EPS = 1e-10;
double dot(P a, P b) { return (conj(a) * b).real(); }
double cros(P a, P b) { return (conj(a) * b).imag(); }

int ccw(P a, P b, P c) {
  b -= a;
  c -= a;
  if (cros(b, c) > EPS)
    return +1; // ccw
  if (cros(b, c) < EPS)
    return -1; // cw
  if (dot(b, c) < EPS)
    return +2; // c-a-b
  if (dot(b, c) > EPS)
    return -2; // a-b-c or a-c-b
  return 0;
}
P dir(L a) { return a.Y - a.X; }
P proj(P a, L to) {
  P t = dir(to);
  a -= to.X;
  return dot(a, t) / norm(t) * t + to.X;
}

P refle(P a, L mirror) { return P(2) * proj(a, mirror) - a; }
int main() {
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(0);
  int i, j, k;
  double a, b, c, d, e, f;
  P p, q;
  L l;
  while (EOF != scanf("%lf,%lf,%lf,%lf,%lf,%lf", &a, &b, &c, &d, &e, &f)) {
    p = P(e, f);
    l = L(P(a, b), P(c, d));
    //  cout<<p<<l<<endl;
    q = refle(p, l);
    printf("%.5lf %.5lf\\n", q.re, q.im);
  }
  return 0;
}

Error: TLE

Fixed submission:

#include <algorithm>
#include <bitset>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
#define X first
#define Y second
#define pb push_back
#define rep(X, Y) for (int(X) = 0; (X) < (Y); ++(X))
#define rrep(X, Y) for (int(X) = (Y - 1); (X) >= 0; --(X))
#define repe(X, Y) for ((X) = 0; (X) < (Y); ++(X))
#define peat(X, Y) for (; (X) < (Y); ++(X))
#define all(X) (X).begin(), (X).end()
#define rall(X) (X).rbegin(), (X).rend()

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
template <class T> ostream &operator<<(ostream &os, const vector<T> &t) {
  os << "{";
  rep(i, t.size()) { os << t[i] << ","; }
  os << "}" << endl;
  return os;
}
template <class S, class T>
ostream &operator<<(ostream &os, const pair<S, T> &t) {
  return os << "(" << t.first << "," << t.second << ")";
}
#define re real()
#define im imag()
// template<class T> ostream& operator<<(ostream &os, const complex<T>
// &c){return os<<"("<<c.re<<","<<c.im<<")";}
typedef complex<double> P;
typedef pair<P, P> L; // sX+tY
double EPS = 1e-10;
double dot(P a, P b) { return (conj(a) * b).real(); }
double cros(P a, P b) { return (conj(a) * b).imag(); }

int ccw(P a, P b, P c) {
  b -= a;
  c -= a;
  if (cros(b, c) > EPS)
    return +1; // ccw
  if (cros(b, c) < EPS)
    return -1; // cw
  if (dot(b, c) < EPS)
    return +2; // c-a-b
  if (dot(b, c) > EPS)
    return -2; // a-b-c or a-c-b
  return 0;
}
P dir(L a) { return a.Y - a.X; }
P proj(P a, L to) {
  P t = dir(to);
  a -= to.X;
  return dot(a, t) / norm(t) * t + to.X;
}

P refle(P a, L mirror) { return P(2) * proj(a, mirror) - a; }
int main() {
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(0);
  int i, j, k;
  double a, b, c, d, e, f;
  P p, q;
  L l;
  while (scanf("%lf,%lf,%lf,%lf,%lf,%lf", &a, &b, &c, &d, &e, &f)) {
    p = P(e, f);
    l = L(P(a, b), P(c, d));
    //  cout<<p<<l<<endl;
    q = refle(p, l);
    printf("%.5lf %.5lf\\n", q.re, q.im);
  }
  return 0;
}