Submission #761713

#TimeUsernameProblemLanguageResultExecution timeMemory
761713alexander707070Rectangles (IOI19_rect)C++14
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> #define MAXN 100007 using namespace std; struct point{ int x,y; inline friend bool operator < (point fr,point sc){ return fr.x<sc.x; } }; int n,last,cnt,pos,s; point p[MAXN],endp; bool used[MAXN]; long long av; vector< pair<point,point> > v; point intersec(point a,point b){ return {a.x,b.y}; } string name[10]={"01.in","02.in","03.in","04.in","05.in","06.in","07.in","08.in","09.in","10.in"}; string eman[10]={"01.out","02.out","03.out","04.out","05.out","06.out","07.out","08.out","09.out","10.out"}; int main(){ fstream cinn,conn; for(int test=0;test<4;test++){ cinn.open(name[test],ios_base::in); conn.open(eman[test],ios_base::out); cinn>>n; v.clear(); av=0; for(int i=1;i<=n;i++){ cinn>>p[i].x>>p[i].y; used[i]=false; av+=p[i].y; } av/=n; sort(p+1,p+n+1); used[1]=true; endp=p[1]; pos=0; last=1; cnt=n-1; while(cnt>0){ s=0; for(int i=1;i<=n;i++){ if(used[i])continue; if(pos==0 and !(p[i].y>av and p[last].y<p[i].y) and !(p[i].y<av and p[last].y>p[i].y)){ used[i]=true; cnt--; v.push_back({endp,intersec(p[i],p[last])}); endp=intersec(p[i],p[last]); if(p[i].y>p[last].y)pos=1; else pos=2; last=i; }else if(pos==1 and p[i].y>p[last].y){ used[i]=true; cnt--; v.push_back({endp,intersec(p[last],p[i])}); endp=intersec(p[last],p[i]); pos=0; last=i; }else if(pos==2 and p[i].y<p[last].y){ used[i]=true; cnt--; v.push_back({endp,intersec(p[last],p[i])}); endp=intersec(p[last],p[i]); pos=0; last=i; }else{ s=i; } } if(s!=0){ used[s]=true; cnt--; v.push_back({endp,p[last]}); v.push_back({p[last],intersec(p[s],p[last])}); endp=intersec(p[s],p[last]); if(p[last].y<p[s].y)pos=1; else pos=2; last=s; } s=0; for(int i=n;i>=1;i--){ if(used[i])continue; if(pos==0 and !(p[i].y>av and p[last].y<p[i].y) and !(p[i].y<av and p[last].y>p[i].y)){ used[i]=true; cnt--; v.push_back({endp,intersec(p[i],p[last])}); endp=intersec(p[i],p[last]); if(p[i].y>p[last].y)pos=1; else pos=2; last=i; }else if(pos==1 and p[i].y>p[last].y){ used[i]=true; cnt--; v.push_back({endp,intersec(p[last],p[i])}); endp=intersec(p[last],p[i]); pos=0; last=i; }else if(pos==2 and p[i].y<p[last].y){ used[i]=true; cnt--; v.push_back({endp,intersec(p[last],p[i])}); endp=intersec(p[last],p[i]); pos=0; last=i; }else{ s=i; } } if(s!=0){ used[s]=true; cnt--; v.push_back({endp,p[last]}); v.push_back({p[last],intersec(p[s],p[last])}); endp=intersec(p[s],p[last]); if(p[last].y<p[s].y)pos=1; else pos=2; last=s; } } v.push_back({endp,p[last]}); v.push_back({p[last],{p[last].x,0}}); v.push_back({{p[last].x,0},{0,0}}); conn<<v.size()+1<<"\n"; for(int i=v.size()-1;i>=0;i--){ conn<<v[i].second.x<<" "<<v[i].second.y<<"\n"; } conn<<v[0].first.x<<" "<<v[0].first.y<<"\n"; cinn.close(); conn.close(); cout<<test<<" "; } /* cout<<v.size()+1<<"\n"; for(int i=0;i<v.size();i++){ cout<<v[i].first.x<<" "<<v[i].first.y<<" "<<v[i].second.x<<" "<<v[i].second.y<<"\n"; } cout<<v.back().second.x<<" "<<v.back().second.y<<"\n"; */ return 0; } /** 20 80 32 59 15 54 47 22 84 53 28 68 40 60 11 61 100 16 83 64 20 20 6 32 2 50 98 72 37 66 4 18 94 41 25 97 99 30 86 74 49 */

Compilation message (stderr)

/usr/bin/ld: /tmp/ccgcpYsV.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc2wZRKU.o:rect.cpp:(.text.startup+0xb0): first defined here
/usr/bin/ld: /tmp/ccgcpYsV.o: in function `main':
grader.cpp:(.text.startup+0x6fa): undefined reference to `count_rectangles(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >)'
collect2: error: ld returned 1 exit status