Language: C++

#include <iostream>
#include <cstdio>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <deque>
#include <stack>
#include <algorithm>
#include <cstring>
#include <functional>
#include <cmath>
#include <complex>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);++i)
#define rep1(i,n) for(int i=1;i<=(n);++i)
#define all(c) (c).begin(),(c).end()
#define fs first
#define sc second
#define pb push_back
#define show(x) cout << #x << " " << x << endl
typedef double D;
typedef complex<D> P;
typedef pair<P,P> L;
typedef vector<P> Pol;
D inf=1e50,eps=1e-10;
int N,M,B;
P o[101],v[101];
D T[102];				//T[i]~T[i+1]  p=o[i]+t*v[i]
Pol pol;
D cro(P a,P b){return imag(conj(a)*b);}
D verlen(L l,P p){return cro(l.fs-l.sc,p-l.sc)/abs(l.fs-l.sc);}
bool onL(L l,P p){return abs(abs(l.fs-l.sc)-abs(l.fs-p)-abs(p-l.sc))<eps;}
D gett(P p,P v,L l){
	if(cro(l.sc-l.fs,v)<eps) return inf;
	D l0=verlen(l,p),l1=verlen(l,p+v);
	D tt=l0/(l0-l1);
	P pt=p+v*tt;
	if(onL(l,pt)) return tt;
	return inf;
}
int main(){
	while(true){
		cin>>N>>M>>B;
		if(N==0) break;
		pol.clear();
		rep(i,N){
			int x,y;
			cin>>x>>y;
			pol.pb(P(x,y));
		}
		o[0]=P(0,0);
		rep(i,M){
			cin>>T[i+1]>>v[i].real()>>v[i].imag();
			o[i+1]=o[i]+v[i]*(T[i+1]-T[i]);
		}
		rep(i,M) o[i]-=T[i]*v[i];
		T[M+1]=inf;
		vector<D> ans;
		rep(b,B){
			D tt,x,len;
			P vv;
			cin>>tt>>x>>vv.real()>>vv.imag()>>len;
			P oo=P(x,0)-tt*vv;
			D mn=inf;
			rep(i,M+1){
				rep(j,N){
					D it=gett(oo,vv-v[i],L(o[i]+pol[j],o[i]+pol[(j+1)%N]));
					if(T[i]-eps<it&&it<T[i+1]+eps) mn=min(mn,it);
					it=gett(oo-vv/abs(vv)*len,vv-v[i],L(o[i]+pol[j],o[i]+pol[(j+1)%N]));
					if(T[i]-eps<it&&it<T[i+1]+eps) mn=min(mn,it);
					it=gett(o[i]+pol[j],v[i]-vv,L(oo,oo-vv/abs(vv)*len));
					if(T[i]-eps<it&&it<T[i+1]+eps) mn=min(mn,it);
				}
			}
			if(mn<inf) ans.pb(mn);
		}
		sort(all(ans));
		cout<<ans.size()<<endl;
		rep(i,ans.size()) printf("%.8f\n",ans[i]);
	}
}

Compiler output:
a.cc: In function 'int main()':
a.cc:54:36: error: no match for 'operator>>' (operand types are 'std::basic_istream<char>::__istream_type' {aka 'std::basic_istream<char>'} and 'double')
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                         ~~~~~~~~~~~^~~~~~~~~~~~~
      |                            |                  |
      |                            |                  double
      |                            std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}
In file included from /usr/include/c++/14/iostream:42,
                 from a.cc:1:
/usr/include/c++/14/istream:170:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'bool&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:174:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'short int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:177:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'short unsigned int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:181:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:184:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'unsigned int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:188:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'long int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:192:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'long unsigned int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'long long int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:203:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:219:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  219 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:219:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'float&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:223:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  223 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:223:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:227:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  227 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:227:7: note:   conversion of argument 1 would be ill-formed:
a.cc:54:47: error: cannot bind non-const lvalue reference of type 'long double&' to a value of type 'double'
   54 |                         cin>>T[i+1]>>v[i].real()>>v[i].imag();
      |                                      ~~~~~~~~~^~
/usr/include/c++/14/istream:328:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  328 |       operator>>(void*& __p)
      |       ^~~~~~~~
/usr/include/c++/14/istream:328:25: note:   no known conversion for argument 1 from 'double' to 'void*&'
  328 |       operator>>(void*& __p)
      |                  ~~~~~~~^~~
/usr/include/c++/14/istream:122:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__istream_type& (*)(__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:122:36: note:   no known conversion for argument 1 from 'double' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'}
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |                  ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/istream:126:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__ios_type& (*)(__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>; __ios_type = std::basic_ios<char>]'
  126 |       operator>>(__ios_type& (*__pf)(__ios_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:126:32: not