Submission #287573

# Submission time Handle Problem Language Result Execution time Memory
287573 2020-08-31T20:13:23 Z DanerZein Sky Walking (IOI19_walk) C++14
10 / 100
4000 ms 312512 KB
#include <bits/stdc++.h>
#include "walk.h"
#define msize 1023437
#define MAX 9223372036854775806
using namespace std;
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<ii> vi;
ll dist[msize];
ll isq[msize];
vector<vi> G;
void dijktra(ll u){
  memset(isq,0,sizeof isq);
  for(int i=0;i<=msize;i++){
    dist[i]=MAX;
  }
  priority_queue<ii,vi,greater<ii> > pq;
  dist[u]=0;
  isq[u]=1;
  pq.push(ii(0,u));
  while(!pq.empty()){
    ll x=pq.top().second;
    ll di=pq.top().first;
    pq.pop();
    isq[x]=0;
    // if(di>dist[x]) continue;
    for(auto &v:G[x]){
      ll w=v.first;
      if(dist[v.second]>dist[x]+w){
	dist[v.second]=dist[x]+w;
	if(isq[v.second]==0){
	  pq.push(ii(dist[v.second],v.second));
	  isq[v.second]=1;
	}
      }
    }
  }
}
long long min_distance(std::vector<int> x, std::vector<int> h, std::vector<int> l, std::vector<int> r, std::vector<int> y, int s, int g) {
  ll no;
  no=0;
  map<ii,ll> m;
  G.resize(msize);
  vi aux;
  for(int i=0;i<y.size();i++){
    ll ant=-1,id;
    for(int j=l[i];j<=r[i];j++){
      if(h[j]>=y[i]){
	if(m[ii(x[j],y[i])]==0){
	  no++;
	  m[ii(x[j],y[i])]=no;
	}
	aux.push_back(ii(x[j],y[i]));
	if(ant==-1){
	  ant=m[ii(x[j],y[i])];
	  id=j;
	}
	else{
	  ll dis=abs(x[j]-x[id]);
	  ll u=m[ii(x[j],y[i])];
	  G[ant].push_back(ii(dis,u));
	  G[u].push_back(ii(dis,ant));
	  ant=u;
	  id=j;
      }
      }
    }
  }
  if(m[ii(x[s],0)]==0){
    no++;
    m[ii(x[s],0)]=no;
    aux.push_back(ii(x[s],0));
  }
  if(m[ii(x[g],0)]==0){
    no++;
    m[ii(x[g],0)]=no;
    aux.push_back(ii(x[g],0));                       
  }
  sort(aux.begin(),aux.end());
  for(int i=1;i<aux.size();i++){
    if(aux[i].first==aux[i-1].first){
      int u=m[ii(aux[i].first,aux[i].second)];
      int v=m[ii(aux[i-1].first,aux[i-1].second)];
      int w=abs(aux[i].second-aux[i-1].second);
      G[u].push_back(ii(w,v));
      G[v].push_back(ii(w,u));
    }
  }
  dijktra(m[ii(x[s],0)]);
   if(dist[m[ii(x[g],0)]]==MAX) dist[m[ii(x[g],0)]]=-1;
  ll res=dist[m[ii(x[g],0)]];
  return res;
}

Compilation message

walk.cpp: In function 'void dijktra(ll)':
walk.cpp:23:8: warning: unused variable 'di' [-Wunused-variable]
   23 |     ll di=pq.top().first;
      |        ^~
walk.cpp: In function 'long long int min_distance(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, int, int)':
walk.cpp:45:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |   for(int i=0;i<y.size();i++){
      |               ~^~~~~~~~~
walk.cpp:80:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |   for(int i=1;i<aux.size();i++){
      |               ~^~~~~~~~~~~
walk.cpp: In function 'void dijktra(ll)':
walk.cpp:15:12: warning: iteration 1023437 invokes undefined behavior [-Waggressive-loop-optimizations]
   15 |     dist[i]=MAX;
      |            ^
walk.cpp:14:16: note: within this loop
   14 |   for(int i=0;i<=msize;i++){
      |                ^
walk.cpp: In function 'long long int min_distance(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, int, int)':
walk.cpp:59:24: warning: 'id' may be used uninitialized in this function [-Wmaybe-uninitialized]
   59 |    ll dis=abs(x[j]-x[id]);
      |                        ^
# Verdict Execution time Memory Grader output
1 Correct 26 ms 40320 KB Output is correct
2 Correct 26 ms 40320 KB Output is correct
3 Correct 26 ms 40448 KB Output is correct
4 Correct 25 ms 40320 KB Output is correct
5 Correct 29 ms 40448 KB Output is correct
6 Correct 26 ms 40448 KB Output is correct
7 Correct 27 ms 40680 KB Output is correct
8 Correct 27 ms 40448 KB Output is correct
9 Correct 28 ms 40448 KB Output is correct
10 Correct 25 ms 40576 KB Output is correct
11 Correct 24 ms 40448 KB Output is correct
12 Correct 24 ms 40448 KB Output is correct
13 Correct 24 ms 40448 KB Output is correct
14 Correct 24 ms 40448 KB Output is correct
15 Correct 27 ms 40388 KB Output is correct
16 Correct 28 ms 40448 KB Output is correct
17 Correct 27 ms 40576 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 40320 KB Output is correct
2 Correct 27 ms 40320 KB Output is correct
3 Correct 1587 ms 181796 KB Output is correct
4 Correct 1356 ms 178768 KB Output is correct
5 Correct 988 ms 159172 KB Output is correct
6 Correct 1553 ms 142036 KB Output is correct
7 Correct 970 ms 159184 KB Output is correct
8 Correct 2021 ms 222772 KB Output is correct
9 Correct 1096 ms 158528 KB Output is correct
10 Correct 1898 ms 241344 KB Output is correct
11 Correct 768 ms 107672 KB Output is correct
12 Correct 421 ms 70880 KB Output is correct
13 Correct 1610 ms 213404 KB Output is correct
14 Correct 3783 ms 70348 KB Output is correct
15 Correct 2158 ms 70984 KB Output is correct
16 Correct 541 ms 74052 KB Output is correct
17 Correct 510 ms 72932 KB Output is correct
18 Execution timed out 4067 ms 34936 KB Time limit exceeded
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 182 ms 56424 KB Output is correct
2 Runtime error 1090 ms 312512 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 182 ms 56424 KB Output is correct
2 Runtime error 1090 ms 312512 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 26 ms 40320 KB Output is correct
2 Correct 26 ms 40320 KB Output is correct
3 Correct 26 ms 40448 KB Output is correct
4 Correct 25 ms 40320 KB Output is correct
5 Correct 29 ms 40448 KB Output is correct
6 Correct 26 ms 40448 KB Output is correct
7 Correct 27 ms 40680 KB Output is correct
8 Correct 27 ms 40448 KB Output is correct
9 Correct 28 ms 40448 KB Output is correct
10 Correct 25 ms 40576 KB Output is correct
11 Correct 24 ms 40448 KB Output is correct
12 Correct 24 ms 40448 KB Output is correct
13 Correct 24 ms 40448 KB Output is correct
14 Correct 24 ms 40448 KB Output is correct
15 Correct 27 ms 40388 KB Output is correct
16 Correct 28 ms 40448 KB Output is correct
17 Correct 27 ms 40576 KB Output is correct
18 Correct 26 ms 40320 KB Output is correct
19 Correct 27 ms 40320 KB Output is correct
20 Correct 1587 ms 181796 KB Output is correct
21 Correct 1356 ms 178768 KB Output is correct
22 Correct 988 ms 159172 KB Output is correct
23 Correct 1553 ms 142036 KB Output is correct
24 Correct 970 ms 159184 KB Output is correct
25 Correct 2021 ms 222772 KB Output is correct
26 Correct 1096 ms 158528 KB Output is correct
27 Correct 1898 ms 241344 KB Output is correct
28 Correct 768 ms 107672 KB Output is correct
29 Correct 421 ms 70880 KB Output is correct
30 Correct 1610 ms 213404 KB Output is correct
31 Correct 3783 ms 70348 KB Output is correct
32 Correct 2158 ms 70984 KB Output is correct
33 Correct 541 ms 74052 KB Output is correct
34 Correct 510 ms 72932 KB Output is correct
35 Execution timed out 4067 ms 34936 KB Time limit exceeded
36 Halted 0 ms 0 KB -