Submission #244666

# Submission time Handle Problem Language Result Execution time Memory
244666 2020-07-04T13:51:05 Z uacoder123 Jakarta Skyscrapers (APIO15_skyscraper) C++14
57 / 100
485 ms 262148 KB
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define FOR(i,a,b) for (auto i = (a); i <= (b); ++i)
#define NFOR(i,a,b) for(auto i = (a); i >= (b); --i)
#define all(x) (x).begin(), (x).end()
#define sz(x) int(x.size())
#define mp(i,a) make_pair(i,a)
#define pb(a) push_back(a)
#define bit(x,b) (x&(1LL<<b))
 
typedef int lli;
typedef pair <lli,lli> ii;
typedef pair <lli,ii> iii;
typedef vector <lli> vi;
vector<ii> al[5430000];
lli dis[5430000];
set<ii> s;
lli dij(lli so,lli t)
{
  for(lli i=0;i<5430000;++i)
    dis[i]=1000000000;
  s.insert(mp(0,so));
  dis[so]=0;
  while(s.size()!=0)
  {
    ii v=(*s.begin());
    s.erase(s.begin());
    dis[v.S]=v.F;
    for(lli i=0;i<al[v.S].size();++i)
    {
      if(al[v.S][i].S+v.F<dis[al[v.S][i].F])
      {
       s.erase(mp(dis[al[v.S][i].F],al[v.S][i].F));
       dis[al[v.S][i].F]=al[v.S][i].S+v.F;
       s.insert(mp(dis[al[v.S][i].F],al[v.S][i].F)); 
      }
    }
  }
  if(dis[t]==1000000000)
    return(-1);
  return(dis[t]);
}
int main()
{
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  lli test=1;
  for(;test>0;--test)
  {
    lli n,m,rn;
    cin>>n>>m;
    rn=sqrt(n)+1;
    ii dg[m];
    for(lli i=1;i<rn;++i)
    {
      for(lli j=0;j<n;++j)
      {
        if(j+i<n)
        {
          al[i*n+j].pb(mp(i*n+j+i,1));
          al[i*n+j+i].pb(mp(i*n+j,1));
        }
        if(j+i<n)
          al[i*n+j].pb(mp(rn*n+j+i,1));
        if(j-i>=0)
          al[i*n+j].pb(mp(rn*n+j-i,1));
      } 
    }
    for(lli i=0;i<m;++i)
    {
      lli f,se;
      cin>>f>>se;
      dg[i]=mp(f,se);
      if(se<rn)
      {
      al[rn*n+f].pb(mp((se)*n+f,0));
      al[se*n+f].pb(mp(rn*n+f,0));
    }
      if(se>=rn)
      {
        lli p=f+se;
        while(p<n)
        {
          al[rn*n+f].pb(mp(rn*n+p,(p-f)/se));
          p+=se;
        }
        p=f-se;
        while(p>=0)
        {
          al[rn*n+f].pb(mp(rn*n+p,(f-p)/se));
          p-=se;
        }
      }
    }
    cout<<dij(rn*n+dg[0].F,rn*n+dg[1].F)<<endl;
  }
  return(0);
}

Compilation message

skyscraper.cpp: In function 'lli dij(lli, lli)':
skyscraper.cpp:31:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(lli i=0;i<al[v.S].size();++i)
                 ~^~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 92 ms 149112 KB Output is correct
2 Correct 91 ms 149112 KB Output is correct
3 Correct 120 ms 149112 KB Output is correct
4 Correct 104 ms 149112 KB Output is correct
5 Correct 102 ms 149112 KB Output is correct
6 Correct 102 ms 149112 KB Output is correct
7 Correct 88 ms 149024 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 93 ms 149140 KB Output is correct
2 Correct 97 ms 149048 KB Output is correct
3 Correct 91 ms 149112 KB Output is correct
4 Correct 90 ms 149112 KB Output is correct
5 Correct 89 ms 149112 KB Output is correct
6 Correct 89 ms 149112 KB Output is correct
7 Correct 90 ms 149112 KB Output is correct
8 Correct 88 ms 149112 KB Output is correct
9 Correct 90 ms 149112 KB Output is correct
10 Correct 102 ms 149112 KB Output is correct
11 Correct 89 ms 149240 KB Output is correct
12 Correct 93 ms 149244 KB Output is correct
13 Correct 90 ms 149240 KB Output is correct
14 Correct 89 ms 149240 KB Output is correct
15 Correct 98 ms 149240 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 88 ms 149112 KB Output is correct
2 Correct 95 ms 149032 KB Output is correct
3 Correct 89 ms 149116 KB Output is correct
4 Correct 90 ms 149112 KB Output is correct
5 Correct 88 ms 149112 KB Output is correct
6 Correct 90 ms 149112 KB Output is correct
7 Correct 88 ms 149112 KB Output is correct
8 Correct 94 ms 149140 KB Output is correct
9 Correct 89 ms 149112 KB Output is correct
10 Correct 91 ms 149112 KB Output is correct
11 Correct 98 ms 149256 KB Output is correct
12 Correct 89 ms 149240 KB Output is correct
13 Correct 89 ms 149240 KB Output is correct
14 Correct 92 ms 149240 KB Output is correct
15 Correct 89 ms 149240 KB Output is correct
16 Correct 90 ms 149240 KB Output is correct
17 Correct 96 ms 150136 KB Output is correct
18 Correct 101 ms 152440 KB Output is correct
19 Correct 107 ms 153208 KB Output is correct
20 Correct 103 ms 153336 KB Output is correct
21 Correct 94 ms 149496 KB Output is correct
22 Correct 103 ms 152568 KB Output is correct
23 Correct 102 ms 152056 KB Output is correct
24 Correct 104 ms 153080 KB Output is correct
25 Correct 105 ms 153208 KB Output is correct
26 Correct 104 ms 153336 KB Output is correct
27 Correct 115 ms 153464 KB Output is correct
28 Correct 107 ms 153352 KB Output is correct
29 Correct 113 ms 153312 KB Output is correct
30 Correct 114 ms 153208 KB Output is correct
31 Correct 112 ms 153336 KB Output is correct
32 Correct 114 ms 153336 KB Output is correct
33 Correct 127 ms 153852 KB Output is correct
34 Correct 119 ms 153848 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 91 ms 149112 KB Output is correct
2 Correct 91 ms 149112 KB Output is correct
3 Correct 91 ms 149240 KB Output is correct
4 Correct 89 ms 149080 KB Output is correct
5 Correct 90 ms 149112 KB Output is correct
6 Correct 89 ms 149112 KB Output is correct
7 Correct 90 ms 149112 KB Output is correct
8 Correct 98 ms 149112 KB Output is correct
9 Correct 89 ms 149112 KB Output is correct
10 Correct 89 ms 149112 KB Output is correct
11 Correct 92 ms 149240 KB Output is correct
12 Correct 90 ms 149240 KB Output is correct
13 Correct 92 ms 149240 KB Output is correct
14 Correct 91 ms 149240 KB Output is correct
15 Correct 98 ms 149240 KB Output is correct
16 Correct 89 ms 149368 KB Output is correct
17 Correct 94 ms 150136 KB Output is correct
18 Correct 102 ms 152440 KB Output is correct
19 Correct 103 ms 153208 KB Output is correct
20 Correct 104 ms 153336 KB Output is correct
21 Correct 100 ms 149496 KB Output is correct
22 Correct 110 ms 152568 KB Output is correct
23 Correct 104 ms 152004 KB Output is correct
24 Correct 118 ms 152952 KB Output is correct
25 Correct 102 ms 153336 KB Output is correct
26 Correct 104 ms 153340 KB Output is correct
27 Correct 107 ms 153336 KB Output is correct
28 Correct 114 ms 153336 KB Output is correct
29 Correct 117 ms 153336 KB Output is correct
30 Correct 106 ms 153208 KB Output is correct
31 Correct 107 ms 153336 KB Output is correct
32 Correct 106 ms 153336 KB Output is correct
33 Correct 120 ms 153848 KB Output is correct
34 Correct 117 ms 153848 KB Output is correct
35 Correct 112 ms 152440 KB Output is correct
36 Correct 100 ms 150904 KB Output is correct
37 Correct 128 ms 154620 KB Output is correct
38 Correct 143 ms 154616 KB Output is correct
39 Correct 130 ms 154616 KB Output is correct
40 Correct 127 ms 154616 KB Output is correct
41 Correct 125 ms 154616 KB Output is correct
42 Correct 108 ms 154228 KB Output is correct
43 Correct 110 ms 154228 KB Output is correct
44 Correct 109 ms 154036 KB Output is correct
45 Correct 126 ms 157432 KB Output is correct
46 Correct 126 ms 157304 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 97 ms 149112 KB Output is correct
2 Correct 90 ms 149112 KB Output is correct
3 Correct 89 ms 149112 KB Output is correct
4 Correct 93 ms 149112 KB Output is correct
5 Correct 92 ms 149088 KB Output is correct
6 Correct 89 ms 149088 KB Output is correct
7 Correct 90 ms 149112 KB Output is correct
8 Correct 92 ms 149112 KB Output is correct
9 Correct 92 ms 149112 KB Output is correct
10 Correct 95 ms 149240 KB Output is correct
11 Correct 89 ms 149240 KB Output is correct
12 Correct 89 ms 149372 KB Output is correct
13 Correct 92 ms 149240 KB Output is correct
14 Correct 91 ms 149244 KB Output is correct
15 Correct 97 ms 149148 KB Output is correct
16 Correct 95 ms 149248 KB Output is correct
17 Correct 95 ms 150136 KB Output is correct
18 Correct 103 ms 152440 KB Output is correct
19 Correct 114 ms 153304 KB Output is correct
20 Correct 109 ms 153336 KB Output is correct
21 Correct 93 ms 149496 KB Output is correct
22 Correct 102 ms 152568 KB Output is correct
23 Correct 108 ms 152060 KB Output is correct
24 Correct 104 ms 153080 KB Output is correct
25 Correct 103 ms 153208 KB Output is correct
26 Correct 106 ms 153336 KB Output is correct
27 Correct 105 ms 153312 KB Output is correct
28 Correct 109 ms 153336 KB Output is correct
29 Correct 111 ms 153336 KB Output is correct
30 Correct 109 ms 153212 KB Output is correct
31 Correct 109 ms 153336 KB Output is correct
32 Correct 108 ms 153440 KB Output is correct
33 Correct 115 ms 153848 KB Output is correct
34 Correct 120 ms 153848 KB Output is correct
35 Correct 121 ms 152392 KB Output is correct
36 Correct 103 ms 150904 KB Output is correct
37 Correct 147 ms 154744 KB Output is correct
38 Correct 129 ms 154616 KB Output is correct
39 Correct 127 ms 154616 KB Output is correct
40 Correct 146 ms 154744 KB Output is correct
41 Correct 145 ms 154616 KB Output is correct
42 Correct 110 ms 154100 KB Output is correct
43 Correct 122 ms 154104 KB Output is correct
44 Correct 111 ms 154036 KB Output is correct
45 Correct 127 ms 157432 KB Output is correct
46 Correct 127 ms 157304 KB Output is correct
47 Correct 464 ms 218620 KB Output is correct
48 Runtime error 485 ms 262148 KB Execution killed with signal 9 (could be triggered by violating memory limits)
49 Halted 0 ms 0 KB -