Submission #287579

# Submission time Handle Problem Language Result Execution time Memory
287579 2020-08-31T20:16:13 Z DanerZein Sky Walking (IOI19_walk) C++14
10 / 100
4000 ms 305552 KB
#include <bits/stdc++.h>
#include "walk.h"
#define msize 1000010
#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 1000010 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 39420 KB Output is correct
2 Correct 26 ms 39424 KB Output is correct
3 Correct 25 ms 39420 KB Output is correct
4 Correct 25 ms 39424 KB Output is correct
5 Correct 26 ms 39544 KB Output is correct
6 Correct 26 ms 39552 KB Output is correct
7 Correct 26 ms 39552 KB Output is correct
8 Correct 25 ms 39544 KB Output is correct
9 Correct 25 ms 39544 KB Output is correct
10 Correct 26 ms 39672 KB Output is correct
11 Correct 25 ms 39552 KB Output is correct
12 Correct 25 ms 39424 KB Output is correct
13 Correct 25 ms 39416 KB Output is correct
14 Correct 26 ms 39552 KB Output is correct
15 Correct 25 ms 39424 KB Output is correct
16 Correct 25 ms 39424 KB Output is correct
17 Correct 26 ms 39680 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 25 ms 39424 KB Output is correct
2 Correct 25 ms 39424 KB Output is correct
3 Correct 1531 ms 181056 KB Output is correct
4 Correct 1352 ms 177600 KB Output is correct
5 Correct 989 ms 158280 KB Output is correct
6 Correct 1540 ms 141400 KB Output is correct
7 Correct 979 ms 158276 KB Output is correct
8 Correct 2012 ms 221888 KB Output is correct
9 Correct 1090 ms 157644 KB Output is correct
10 Correct 1897 ms 240328 KB Output is correct
11 Correct 788 ms 106968 KB Output is correct
12 Correct 445 ms 70064 KB Output is correct
13 Correct 1603 ms 212216 KB Output is correct
14 Correct 3858 ms 69364 KB Output is correct
15 Correct 2162 ms 70268 KB Output is correct
16 Correct 548 ms 73188 KB Output is correct
17 Correct 520 ms 72292 KB Output is correct
18 Execution timed out 4086 ms 34448 KB Time limit exceeded
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 191 ms 55528 KB Output is correct
2 Runtime error 1065 ms 305552 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 191 ms 55528 KB Output is correct
2 Runtime error 1065 ms 305552 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 25 ms 39420 KB Output is correct
2 Correct 26 ms 39424 KB Output is correct
3 Correct 25 ms 39420 KB Output is correct
4 Correct 25 ms 39424 KB Output is correct
5 Correct 26 ms 39544 KB Output is correct
6 Correct 26 ms 39552 KB Output is correct
7 Correct 26 ms 39552 KB Output is correct
8 Correct 25 ms 39544 KB Output is correct
9 Correct 25 ms 39544 KB Output is correct
10 Correct 26 ms 39672 KB Output is correct
11 Correct 25 ms 39552 KB Output is correct
12 Correct 25 ms 39424 KB Output is correct
13 Correct 25 ms 39416 KB Output is correct
14 Correct 26 ms 39552 KB Output is correct
15 Correct 25 ms 39424 KB Output is correct
16 Correct 25 ms 39424 KB Output is correct
17 Correct 26 ms 39680 KB Output is correct
18 Correct 25 ms 39424 KB Output is correct
19 Correct 25 ms 39424 KB Output is correct
20 Correct 1531 ms 181056 KB Output is correct
21 Correct 1352 ms 177600 KB Output is correct
22 Correct 989 ms 158280 KB Output is correct
23 Correct 1540 ms 141400 KB Output is correct
24 Correct 979 ms 158276 KB Output is correct
25 Correct 2012 ms 221888 KB Output is correct
26 Correct 1090 ms 157644 KB Output is correct
27 Correct 1897 ms 240328 KB Output is correct
28 Correct 788 ms 106968 KB Output is correct
29 Correct 445 ms 70064 KB Output is correct
30 Correct 1603 ms 212216 KB Output is correct
31 Correct 3858 ms 69364 KB Output is correct
32 Correct 2162 ms 70268 KB Output is correct
33 Correct 548 ms 73188 KB Output is correct
34 Correct 520 ms 72292 KB Output is correct
35 Execution timed out 4086 ms 34448 KB Time limit exceeded
36 Halted 0 ms 0 KB -