Submission #1016825

#TimeUsernameProblemLanguageResultExecution timeMemory
1016825simona1230Rail (IOI14_rail)C++17
0 / 100
199 ms98740 KiB
#include<bits/stdc++.h> #include "rail.h" using namespace std; int l[5001],t[5001]; int d[5001][5001]; int n; vector<pair<int,int> > v; void findLocation(int N, int first, int location[], int stype[]) { n=N; for(int i=0; i<N; i++) { for(int j=i+1; j<N; j++) { d[i][j]=d[j][i]=getDistance(i,j); } } // cout<<vr[i]<<" "<<minn[i]<<endl; l[0]=first; t[0]=1; int minn=1e9,vr1=0; for(int i=1; i<n; i++) { if(d[i][0]<minn) { minn=d[i][0]; vr1=i; } } int vr2=0; minn=1e9; for(int i=0; i<n; i++) { if(vr1!=i&&d[vr1][i]<minn) { minn=d[vr1][i]; vr2=i; } } swap(vr1,vr2); l[vr2]=l[0]+d[0][vr2]; l[vr1]=l[vr2]-1; t[vr1]=1; t[vr2]=2; v.push_back({vr1,vr2}); for(int i=0; i<n; i++) { for(int j=i+1; j<n; j++) { if(d[i][j]!=1||i==vr1||j==vr1)continue; if(d[vr1][i]<d[vr2][i]) { //cout<<"right"<<endl; if(d[vr1][i]<d[vr1][j]) { t[j]=1; t[i]=2; l[i]=l[vr1]+d[vr1][i]; l[j]=l[i]-1; v.push_back({j,i}); } else { t[i]=1; t[j]=2; l[j]=l[vr1]+d[vr1][j]; l[i]=l[j]-1; v.push_back({i,j}); } } else { //cout<<"left"<<endl; if(d[vr2][i]>d[vr2][j]) { t[j]=1; t[i]=2; l[j]=l[vr2]-d[vr2][j]; l[i]=l[j]+1; v.push_back({j,i}); } else { t[i]=1; t[j]=2; l[i]=l[vr2]-d[vr2][i]; l[j]=l[i]+1; v.push_back({i,j}); } } } } for(int i=0;i<v.size();i++) { int lf=v[i].first; int rt=v[i].second; vector<pair<int,int> > curr; for(int j=0;j<n;j++) { if(j==lf||j==rt)continue; curr.push_back({d[lf][j],j*10+1}); curr.push_back({d[rt][j],j*10+2}); } //cout<<l[lf]<<" * "<<l[rt]<<endl; sort(curr.begin(),curr.end()); int cnt=2; for(int j=0;j<curr.size();j++) { if(curr[j].first<=1||curr[j].first>cnt)continue; int num=curr[j].second/10; int tp=curr[j].second%10; if(t[num])continue; //cout<<num<<" "<<tp<<endl; if(tp==1)t[num]=2,l[num]=d[lf][num]+l[lf]; else cnt++,t[num]=1,l[num]=l[rt]-d[rt][num]; } //cout<<v[i].first<<" () "<<v[i].second<<endl; } for(int i=0; i<n; i++) { location[i]=l[i],stype[i]=t[i]; //cout<<t[i]<<" "<<l[i]<<endl; } }

Compilation message (stderr)

rail.cpp: In function 'void findLocation(int, int, int*, int*)':
rail.cpp:103:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  103 |     for(int i=0;i<v.size();i++)
      |                 ~^~~~~~~~~
rail.cpp:119:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  119 |         for(int j=0;j<curr.size();j++)
      |                     ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...