Submission #287576

# Submission time Handle Problem Language Result Execution time Memory
287576 2020-08-31T20:14:45 Z DanerZein Sky Walking (IOI19_walk) C++14
10 / 100
4000 ms 307392 KB
#include <bits/stdc++.h>
#include "walk.h"
#define msize 1005859
#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 1005859 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 25 ms 39680 KB Output is correct
2 Correct 25 ms 39680 KB Output is correct
3 Correct 25 ms 39680 KB Output is correct
4 Correct 25 ms 39680 KB Output is correct
5 Correct 26 ms 39808 KB Output is correct
6 Correct 26 ms 39808 KB Output is correct
7 Correct 26 ms 39808 KB Output is correct
8 Correct 26 ms 39800 KB Output is correct
9 Correct 25 ms 39680 KB Output is correct
10 Correct 26 ms 39808 KB Output is correct
11 Correct 25 ms 39680 KB Output is correct
12 Correct 25 ms 39672 KB Output is correct
13 Correct 26 ms 39808 KB Output is correct
14 Correct 25 ms 39680 KB Output is correct
15 Correct 25 ms 39680 KB Output is correct
16 Correct 25 ms 39672 KB Output is correct
17 Correct 26 ms 39808 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 25 ms 39680 KB Output is correct
2 Correct 25 ms 39680 KB Output is correct
3 Correct 1568 ms 181316 KB Output is correct
4 Correct 1358 ms 177984 KB Output is correct
5 Correct 1000 ms 158480 KB Output is correct
6 Correct 1540 ms 141432 KB Output is correct
7 Correct 979 ms 158668 KB Output is correct
8 Correct 2020 ms 222256 KB Output is correct
9 Correct 1092 ms 157888 KB Output is correct
10 Correct 1895 ms 240704 KB Output is correct
11 Correct 779 ms 107092 KB Output is correct
12 Correct 431 ms 70340 KB Output is correct
13 Correct 1584 ms 212680 KB Output is correct
14 Correct 3952 ms 69488 KB Output is correct
15 Correct 2253 ms 70408 KB Output is correct
16 Correct 553 ms 73184 KB Output is correct
17 Correct 518 ms 72416 KB Output is correct
18 Execution timed out 4066 ms 34688 KB Time limit exceeded
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 191 ms 55792 KB Output is correct
2 Runtime error 1084 ms 307392 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 191 ms 55792 KB Output is correct
2 Runtime error 1084 ms 307392 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 25 ms 39680 KB Output is correct
2 Correct 25 ms 39680 KB Output is correct
3 Correct 25 ms 39680 KB Output is correct
4 Correct 25 ms 39680 KB Output is correct
5 Correct 26 ms 39808 KB Output is correct
6 Correct 26 ms 39808 KB Output is correct
7 Correct 26 ms 39808 KB Output is correct
8 Correct 26 ms 39800 KB Output is correct
9 Correct 25 ms 39680 KB Output is correct
10 Correct 26 ms 39808 KB Output is correct
11 Correct 25 ms 39680 KB Output is correct
12 Correct 25 ms 39672 KB Output is correct
13 Correct 26 ms 39808 KB Output is correct
14 Correct 25 ms 39680 KB Output is correct
15 Correct 25 ms 39680 KB Output is correct
16 Correct 25 ms 39672 KB Output is correct
17 Correct 26 ms 39808 KB Output is correct
18 Correct 25 ms 39680 KB Output is correct
19 Correct 25 ms 39680 KB Output is correct
20 Correct 1568 ms 181316 KB Output is correct
21 Correct 1358 ms 177984 KB Output is correct
22 Correct 1000 ms 158480 KB Output is correct
23 Correct 1540 ms 141432 KB Output is correct
24 Correct 979 ms 158668 KB Output is correct
25 Correct 2020 ms 222256 KB Output is correct
26 Correct 1092 ms 157888 KB Output is correct
27 Correct 1895 ms 240704 KB Output is correct
28 Correct 779 ms 107092 KB Output is correct
29 Correct 431 ms 70340 KB Output is correct
30 Correct 1584 ms 212680 KB Output is correct
31 Correct 3952 ms 69488 KB Output is correct
32 Correct 2253 ms 70408 KB Output is correct
33 Correct 553 ms 73184 KB Output is correct
34 Correct 518 ms 72416 KB Output is correct
35 Execution timed out 4066 ms 34688 KB Time limit exceeded
36 Halted 0 ms 0 KB -