Submission #633354

# Submission time Handle Problem Language Result Execution time Memory
633354 2022-08-22T07:52:18 Z andrei_boaca Printed Circuit Board (CEOI12_circuit) C++14
5 / 100
100 ms 8148 KB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef long double ld;
int n;
struct point
{
    ll x,y,ang,poz;
} v[100005];
bool byang(int q, int t)
{
    point a=v[q];
    point b=v[t];
    if(a.y*b.x!=a.x*b.y)
        return a.y*b.x<a.x*b.y;
    return a.x<b.x;
}
bool iseq(point A, point B)
{
    return A.x==B.x&&A.y==B.y;
}
bool intersect(point A, point B, point C)
{
    if(iseq(A,C)||iseq(B,C))
        return 0;

    ll a1=B.y-A.y;
    ll b1=A.x-B.x;
    ll c1=-a1*A.x-b1*A.y;

    ll a2=C.y;
    ll b2=-C.x;
    ll c2=0;

    ld coef=a2*b1-a1*b2;
    if(coef==0)
        return 0;
    ld y=ld(-a2*c1)/coef;
    ld x=ld(-b2*y)/a2;
    if(x<=C.x&&y<=C.y&&x>=0&&y>=0)
        return 1;
    return 0;
}
bool bylin(int q,int t)
{
    point a=v[q];
    int nxt=q+1;
    if(nxt>n)
        nxt=1;
    point b=v[nxt];

    point c=v[t];
    nxt=t+1;
    if(nxt>n)
        nxt=1;
    point d=v[nxt];

    bool isC=intersect(a,b,c);
    bool isD=intersect(a,b,d);
    if(isC==0&&isD==0)
        return 0;
    if(isC==1&&isD==1)
        return 1;

    bool isA=intersect(c,d,a);
    bool isB=intersect(c,d,b);
    if(isA==0&&isB==0)
        return 1;
    if(isA==1&&isB==1)
        return 0;
    return 0;
}
int fst[100005];
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i].x>>v[i].y;
        v[i].poz=i;
    }
    vector<int> ind;
    for(int i=1;i<=n;i++)
        ind.push_back(i);
    sort(ind.begin(),ind.end(),byang);
    int nr=0;
    for(int i=0;i<ind.size();i++)
    {
        if(i==0)
            nr++;
        else
        {
            point a=v[ind[i-1]];
            point b=v[ind[i]];
            if(a.y*b.x!=a.x*b.y)
                nr++;
        }
        v[ind[i]].ang=nr;
    }
    ind.clear();
    for(int i=1;i<=n;i++)
        ind.push_back(i);
    sort(ind.begin(),ind.end(),bylin);
    for(int i:ind)
    {
        int st=v[i].ang;
        int nxt=i+1;
        if(nxt>n)
            nxt=1;
        int dr=v[nxt].ang;
        if(st>dr)
            swap(st,dr);
        for(int j=st;j<=dr;j++)
            if(fst[j]==0)
                fst[j]=i;
    }
    vector<int> sol;
    for(int i=1;i<=n;i++)
    {
        bool ok=0;
        if(i==3)
            ok=1;
        int ang=v[i].ang;
        int prv=i-1;
        if(i==1)
            prv=n;
        if(fst[ang]!=i&&fst[ang]!=prv)
            continue;
        sol.push_back(i);
    }
    sort(sol.begin(),sol.end());
    cout<<sol.size()<<'\n';
    for(int i:sol)
        cout<<i<<' ';
    return 0;
}

Compilation message

circuit.cpp: In function 'bool intersect(point, point, point)':
circuit.cpp:34:8: warning: unused variable 'c2' [-Wunused-variable]
   34 |     ll c2=0;
      |        ^~
circuit.cpp: In function 'int main()':
circuit.cpp:90:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   90 |     for(int i=0;i<ind.size();i++)
      |                 ~^~~~~~~~~~~
circuit.cpp:123:14: warning: variable 'ok' set but not used [-Wunused-but-set-variable]
  123 |         bool ok=0;
      |              ^~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Incorrect 1 ms 340 KB Output isn't correct
3 Execution timed out 143 ms 464 KB Time limit exceeded
4 Execution timed out 258 ms 500 KB Time limit exceeded
5 Incorrect 28 ms 852 KB Output isn't correct
6 Incorrect 22 ms 848 KB Output isn't correct
7 Incorrect 66 ms 1484 KB Output isn't correct
8 Incorrect 18 ms 716 KB Output isn't correct
9 Incorrect 27 ms 780 KB Output isn't correct
10 Incorrect 20 ms 852 KB Output isn't correct
11 Incorrect 27 ms 980 KB Output isn't correct
12 Correct 36 ms 1372 KB Output is correct
13 Execution timed out 138 ms 2012 KB Time limit exceeded
14 Execution timed out 848 ms 2420 KB Time limit exceeded
15 Execution timed out 105 ms 2928 KB Time limit exceeded
16 Execution timed out 215 ms 5504 KB Time limit exceeded
17 Execution timed out 1086 ms 5580 KB Time limit exceeded
18 Runtime error 21 ms 8148 KB Execution killed with signal 11
19 Runtime error 21 ms 8112 KB Execution killed with signal 11
20 Execution timed out 1073 ms 5632 KB Time limit exceeded