#include using namespace std; bool AA=true; long long N,M,U,x,y,q,ZBIR,VOJNICI,PROTIVNICI,BROJ,SET=1,POTEZI=150000,MESTO,UVOJNICI,POZICIJA; struct slog{ long long X,Y,Q; }; slog NIZ[500005],NIZ2[500005]; bool prvis(slog a,slog b){ return (a.X*a.X+a.Y*a.Y)<(b.X*b.X+b.Y*b.Y); } bool drugis(slog a,slog b){ return ((x-a.X)*(x-a.X)+(y-a.Y)*(y-a.Y))<((x-b.X)*(x-b.X)+(y-b.Y)*(y-b.Y)); } void set1(){ long long i,j,I; printf("%lld\n",POTEZI); for(i=2;i<=N and NIZ[1].Q<5010;i++){ printf("%lld %lld %lld %lld %lld \n",NIZ[i].X,NIZ[i].Y,NIZ[1].X,NIZ[1].Y,NIZ[i].Q); POTEZI--; NIZ[1].Q+=NIZ[i].Q; NIZ[i].Q=0; } x=NIZ[1].X; y=NIZ[1].Y; sort(NIZ2+1,NIZ2+M+1,drugis); for(j=1;j<=M and UVOJNICI0){printf("%lld %lld %lld %lld %lld \n",NIZ[i].X,NIZ[i].Y,NIZ[1].X,NIZ[1].Y,NIZ[i].Q); NIZ[1].Q+=NIZ[i].Q; POTEZI--; NIZ[i].Q=0; } i++; } printf("%lld %lld %lld %lld %lld \n",NIZ[1].X,NIZ[1].Y,NIZ2[j].X,NIZ2[j].Y,NIZ2[j].Q); NIZ[1].Q-=NIZ2[j].Q; x=NIZ2[j].X; y=NIZ2[j].Y; if(i%1000==0){ sort(NIZ+i+1,NIZ+N+1,drugis); } if(i%500==0){ sort(NIZ+i+1,NIZ+500+i,drugis); } if(i%250==0){ sort(NIZ+i+1,NIZ+250+i,drugis); } if(i%100==0){ sort(NIZ+i+1,NIZ+100+i,drugis); } if(i%50==0){ sort(NIZ+i+1,NIZ+i+50,drugis); } if(i%10==0){ sort(NIZ+i+1,NIZ+i+10,drugis); swap(NIZ[1],NIZ[i+1]); sort(NIZ+i+1,NIZ+i+10,drugis); } POTEZI--; } for(int i=1;i<=N;i++){ if(NIZ[i].Q>0){ I=i; break; } } while(POTEZI>0){ printf("%lld %lld %lld %lld %lld \n",NIZ[I].X,NIZ[I].Y,NIZ[I].X,NIZ[I].Y,1); POTEZI--; } } void set2(){ int i; VOJNICI=64801; printf("%d \n",N+M); x=NIZ[1].X; y=NIZ[1].Y; for(int i=2;i<=N;i++){ printf("%lld %lld %lld %lld %lld \n",NIZ[i].X,NIZ[i].Y,x,y,NIZ[i].Q); NIZ[1].Q+=NIZ[i].Q; } sort(NIZ2+1,NIZ2+M+1,drugis); for(i=1;i<=M and UVOJNICI>N>>M; for(int i=1;i<=N;i++){ scanf("%lld %lld %lld",&NIZ[i].X,&NIZ[i].Y,&NIZ[i].Q); UVOJNICI+=NIZ[i].Q; } for(int i=1;i<=M;i++){ scanf("%lld %lld %lld",&NIZ2[i].X,&NIZ2[i].Y,&NIZ2[i].Q); PROTIVNICI+=NIZ2[i].Q; if(NIZ2[i].Q>100 and SET<2)SET=2; if(NIZ2[i].Q>360 and SET<3)SET=3; if(NIZ2[i].Q>1300 and SET<4)SET=4; if(NIZ2[i].Q>4690 and SET<5)SET=5; } if(SET==1)set1(); if(SET==2)set2(); if(SET==3)set3(); if(SET==4)set4(); if(SET==5)set5(); return 0; }