#include # define endl '\n' # define clr(x,a) memset(x,a,sizeof(x)) # define vi vector # define all(a) a.begin(), a.end() # define deb(x) cout<<#x<<"=="< ociscena_polja; void unos(){ smerodslova['U']=0; smerodslova['R']=1; smerodslova['D']=2; smerodslova['L']=3; freopen("cleanUP.in", "r", stdin); sc("%d %d %d %lld %lld %d %d", &n, &k, &s, &w, &z, &x, &y); korenizs=sqrt(s); np=floor(1.414213562*(n-1)); for(int i=0; i<=np; i++) sc("%lld", &p[i]); for(int i=1; i<=k; i++){ sc("%lld%lld", &crnerupe[i].r, &crnerupe[i].c); crnerupekopi[i]=crnerupe[i]; } } void ispis(){ freopen("cleanUP.out", "w", stdout); cout<n || q.c<=0 || q.c>n) return 0; return 1; } bool cisto_polje(Point q){ for(Point i: ociscena_polja){ if(i.r==q.r && i.c==q.c) return 0; } return 1; } int distance(Point a, Point b){ ll kr=(a.r-b.r)*(a.r-b.r); ll kc=(a.c-b.c)*(a.c-b.c); return sqrt(kr+kc); } int Dindeks(Point a){ int najbliza=1e9; for(int i=1; i<=k; i++){ int tren=distance(a, crnerupe[i]); if(trenbestdust){ bestdust=trendust; push=smer[j]; } } if(push=='@'){ nova.r=mojp.r+dr[teid2]; nova.c=mojp.c+dc[teid2]; if(u_granici(nova)) push=smer[teid2]; else push=suprotan(smer[teid2]); } pomres.score+=bestdust; mojp.c+=dc[smerodslova[push]]; mojp.r+=dr[smerodslova[push]]; ociscena_polja.pb(mojp); pomres.s.pb(push); if(teid1==2){ if(brojackorena==korenizs){ brojackorena=0; spacetime_update(); ociscena_polja.clear(); } } } if(pomres.score>finres.score){ finres=pomres; } } int main(){ unos(); if(n>1000){ for(int j=0; j<=3; j++) greedy(1, j); } else{ for(int i=1; i<=2; i++){ for(int j=0; j<=3; j++) greedy(i, j); } } // cout<