Submission #702519

#TimeUsernameProblemLanguageResultExecution timeMemory
702519NemanjaSo2005Stations (IOI20_stations)C++14
100 / 100
966 ms840 KiB
#include<bits/stdc++.h>
#include "stations.h"
#define ll long long
using namespace std;
ll N,K,parnost[1005],in[1005],out[1005],vrem=0;
vector<ll> stablo[1005];
vector<int> L;
void dfs(ll gde,ll pret,int par=0){
   in[gde]=++vrem;
   parnost[gde]=par;
   for(int i=0;i<stablo[gde].size();i++)
      if(stablo[gde][i]!=pret)
         dfs(stablo[gde][i],gde,par^1);
   out[gde]=++vrem;
   return;
}
struct slog{
   int id,sv,nv;
} niz[1005];
bool pov(slog a,slog b){
   return a.sv<b.sv;
}
bool poid(slog a,slog b){
   return a.id<b.id;
}
vector<int> label(int n,int k,vector<int> u,vector<int> v){
   N=n;
   K=k;
   for(ll i=0;i<N;i++)
      stablo[i].clear();
   for(ll i=0;i<N-1;i++){
      stablo[u[i]].push_back(v[i]);
      stablo[v[i]].push_back(u[i]);
   }
   vrem=0;
   dfs(0,0);
   for(int i=0;i<N;i++){
      in[i]--;
      out[i]--;
   }
   L.clear();
   //cout<<"LABELE"<<endl;
   for(ll i=0;i<N;i++){
      niz[i].id=i;
      if(parnost[i]==0)
         niz[i].sv=in[i];
      else
         niz[i].sv=out[i];
     // cout<<i<<" "<<L[i]<<endl;
   }
   sort(niz,niz+N,pov);
   for(int i=0;i<N;i++)
      niz[i].nv=i;
   sort(niz,niz+N,poid);
   for(int i=0;i<N;i++)
      L.push_back(niz[i].nv);
   return L;
}

int find_next_station(int s,int t,vector<int> c){
   if(c.size()==1)
      return c[0];
   for(int i=0;i<c.size();i++)
      if(c[i]==t)
         return c[i];
   bool jein=true;
   for(int i=0;i<c.size();i++)
      if(c[i]<s)
         jein=false;
   sort(c.begin(),c.end());
   if(jein){///IN cvor
      if(t<s)
         return c[c.size()-1];
      for(int i=0;i<c.size();i++)
         if(c[i]>=t)
            return c[i];
      return c[c.size()-1];
   }
   ///Out cvor
   if(t>s)
      return c[0];
   for(int i=1;i<c.size();i++)
      if(t<c[i])
         return c[i-1];
   return c[c.size()-1];
}

Compilation message (stderr)

stations.cpp: In function 'void dfs(long long int, long long int, int)':
stations.cpp:11:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |    for(int i=0;i<stablo[gde].size();i++)
      |                ~^~~~~~~~~~~~~~~~~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:63:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |    for(int i=0;i<c.size();i++)
      |                ~^~~~~~~~~
stations.cpp:67:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |    for(int i=0;i<c.size();i++)
      |                ~^~~~~~~~~
stations.cpp:74:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |       for(int i=0;i<c.size();i++)
      |                   ~^~~~~~~~~
stations.cpp:82:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |    for(int i=1;i<c.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...
#Verdict Execution timeMemoryGrader output
Fetching results...