Submission #115403

#TimeUsernameProblemLanguageResultExecution timeMemory
115403faustaadpRail (IOI14_rail)C++17
30 / 100
1737 ms262144 KiB
#include "rail.h" #include<bits/stdc++.h> typedef long long ll; #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; int i,d[5050][5050],cal,j; pair<int,int> A[5050][5050]; vector<pair<int,int> > isi; int pos[5050]; int tipe[5050]; int z[5050]; void findLocation(int N, int first, int location[], int stype[]) { //if(N>100) // while(1); pos[0]=first; tipe[0]=1; // if(N==1) // return ; for(i=0;i<N;i++) for(j=i+1;j<N;j++) { d[i][j]=getDistance(i,j); d[j][i]=d[i][j]; } for(i=0;i<N;i++) { for(j=0;j<N;j++) A[i][j]=mp(d[i][j],j); sort(A[i],A[i]+N); // cout<<i<<" "<<A[i][1].se<<"()\n"; } for(i=0;i<N;i++) for(j=i+1;j<N;j++) if(A[i][1].se==j&&A[j][1].se==i) isi.pb(mp(i,j)); for(i=0;i<isi.size();i++) { if(isi[i].fi==A[0][1].se||isi[i].se==A[0][1].se) { if(isi[i].fi==A[0][1].se) swap(isi[i].fi,isi[i].se); swap(isi[0],isi[i]); break; } } tipe[isi[0].fi]=1; tipe[isi[0].se]=2; pos[isi[0].se]=pos[0]+d[0][isi[0].se]; pos[isi[0].fi]=pos[isi[0].se]-d[isi[0].se][isi[0].fi]; for(i=1;i<isi.size();i++) { // cout<<"( <3 ) "<<isi[i].fi<<" "<<isi[i].se<<"\n"; // x[0][pas]+ if(d[isi[0].fi][isi[i].fi]==(d[isi[0].fi][isi[0].se]+d[isi[0].se][isi[i].fi])) { if(d[isi[0].fi][isi[i].fi]>d[isi[0].fi][isi[i].se]) swap(isi[i].fi,isi[i].se); pos[isi[i].fi]=pos[isi[0].se]-d[isi[0].se][isi[i].fi]; pos[isi[i].se]=pos[isi[i].fi]+d[isi[i].se][isi[i].fi]; } else { if(d[isi[0].fi][isi[i].fi]<d[isi[0].fi][isi[i].se]) swap(isi[i].fi,isi[i].se); pos[isi[i].se]=pos[isi[0].fi]+d[isi[0].fi][isi[i].se]; pos[isi[i].fi]=pos[isi[i].se]-d[isi[i].se][isi[i].fi]; } tipe[isi[i].fi]=1; tipe[isi[i].se]=2; } for(i=0;i<isi.size();i++) { z[isi[i].fi]=1; z[isi[i].se]=1; // cout<<isi[i].fi<<" "<<isi[i].se<<"_\n"; } for(i=0;i<isi.size();i++) { //break; for(j=0;j<N;j++) { if(z[j])continue; if(A[j][1].se==isi[i].se) { tipe[j]=1; pos[j]=pos[isi[i].se]-d[j][isi[i].se]; } } for(j=0;j<N;j++) { if(z[j])continue; if(A[j][1].se==isi[i].fi) { tipe[j]=2; pos[j]=pos[isi[i].fi]+d[j][isi[i].fi]; } } //cout<<"( <3 )\n"<<isi[i].fi<<" "<<isi[i].se<<"\n"; //cout<<pos[isi[i].fi]<<" "<<pos[isi[i].se]<<"\n"; //cout<<"\n"; } for(i=0;i<N;i++) { // cout<<i<<" "<<tipe[i]<<" "<<pos[i]<<"\n"; location[i]=pos[i]; stype[i]=tipe[i]; } }

Compilation message (stderr)

rail.cpp: In function 'void findLocation(int, int, int*, int*)':
rail.cpp:40:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<isi.size();i++)
          ~^~~~~~~~~~~
rail.cpp:55:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=1;i<isi.size();i++)
          ~^~~~~~~~~~~
rail.cpp:76:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<isi.size();i++)
          ~^~~~~~~~~~~
rail.cpp:82:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<isi.size();i++)
          ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...