Pagini recente » Cod sursa (job #2050871) | Cod sursa (job #2454214) | Cod sursa (job #2019768) | Cod sursa (job #1638746) | Cod sursa (job #2785259)
#include <bits/stdc++.h>
#define PI 3.14159265
using namespace std;
ifstream f("laser.in");
ofstream g("laser.out");
bitset < 1024 > din[1024];
int n,x,y,x2,y2,i,m,j,poz,fr[1024];
long double unghi,unghi2;
pair <long double,long double> ceau[1024];
vector <long double> v,bisect;
int main()
{
f>>n;
for (i=1;i<=n;i++)
{
f>>x>>y>>x2>>y2;
unghi = atan2(y,x) * 180 / PI;
unghi2 = atan2(y2,x2) * 180 / PI;
if (unghi<0)
{
unghi+=360;
}
if (unghi2<0)
{
unghi2+=360;
}
if (unghi>unghi2)
{
swap(unghi,unghi2);
}
ceau[i]={unghi,unghi2};
v.push_back(unghi);
v.push_back(unghi2);
}
sort (v.begin(),v.end());
m=v.size();
for (i=0;i<m-1;i++)
{
bisect.push_back((v[i]+v[i+1]/2));
}
bisect.push_back((v[0]+360+v[m-1])/2);
if (bisect.back()>360)
{
bisect.back()-=360;
}
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
din[i][j]=(ceau[i].first<=bisect[j-1]&&bisect[j-1]<=ceau[i].second);
}
bool x;
f>>x;
din[i][j+1]=x;
}
for (i=1;i<=n;i++)
{
poz=0;
j=0;
for (j=1;j<=m+1;j++)
{
if (din[i][j]!=0)
{
poz=j;
break;
}
}
if (j==m+2)
{
continue;
}
fr[poz]++;
for (j=1;j<=n;j++)
{
if (din[j][poz]!=0)
{
din[j]^=din[i];
}
}
}
vector <long double> sol;
for (j=1;j<=m;j++)
{
if (fr[j]!=0)
{
sol.push_back(bisect[j-1]);
}
}
g<<sol.size()-1<<'\n';
for (i=0;i<sol.size();i++)
{
g<<sol[i]<<'\n';
}
return 0;
}