Submission #1095481

#TimeUsernameProblemLanguageResultExecution timeMemory
1095481MMihalevTowns (IOI15_towns)C++14
25 / 100
1072 ms480 KiB
#include "towns.h" #include<iostream> #include<algorithm> #include<cmath> using namespace std; const int MAX_N=2e2+2; int diam; int tov[MAX_N]; int tou[MAX_N]; int to0[MAX_N]; int n; int hubDistance(int N, int sub) { n=N; int u=0; int far=0,v; for(int i=1;i<n;i++) { int cur=getDistance(u,i); to0[i]=cur; if(cur>far) { far=cur; v=i; } }//0->v diam=0; for(int i=0;i<n;i++) { if(i==v)continue; int cur; if(i==0)cur=to0[v]; else cur=getDistance(i,v); tov[i]=cur; if(cur>diam) { diam=cur; u=i; } }//v->u for(int i=0;i<n;i++) { if(i==u)continue; if(i==0)tou[i]=to0[u]; if(i==v)tou[i]=tov[u]; tou[i]=getDistance(u,i); }//u->all int cntneg=1,cntpos=1,cntbase=0; int mindif=1e9; for(int i=0;i<n;i++) { if(i==u or i==v)continue; int x=tou[i]; int y=tov[i]; int com=((x+y)-diam)/2; x-=com; y-=com; int res=x-y; mindif=min(mindif,abs(res)); } for(int i=0;i<n;i++) { if(i==u or i==v)continue; int x=tou[i]; int y=tov[i]; int com=((x+y)-diam)/2; x-=com; y-=com; int res=x-y; if(abs(res)==mindif)cntbase++; else if(res<0)cntneg++; else cntpos++; } int R=(diam-mindif)/2+mindif; if(sub==4) { if(cntbase+cntpos+cntneg==n)while(1); if(cntbase*2<=n && cntpos*2<=n && cntneg*2<=n)R=-R; } return R; }

Compilation message (stderr)

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:36:29: warning: 'v' may be used uninitialized in this function [-Wmaybe-uninitialized]
   36 |         else cur=getDistance(i,v);
      |                  ~~~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...