제출 #257470

#제출 시각아이디문제언어결과실행 시간메모리
257470tinjyuSky Walking (IOI19_walk)C++14
컴파일 에러
0 ms0 KiB
#include "walk.h" #include <iostream> #include <algorithm> #include <cmath> using namespace std; struct node{ long long int dis,id; }t[10000005]; struct Node{ long long int id,h; }tmp[3000005]; int p[10000005],hp[10000005],m,n,road[10000005],map[30000005][3],cntp,pointer[100005],data[30000005][3],num[100005],cont,st,cnt; long long int dis[1000005] int connect(int a,int b,long long int len) { //cout<<a<<" "<<b<<" "<<len<<endl; cont++; map[cont][0]=b; map[cont][1]=road[a]; map[cont][2]=len; road[a]=cont; cont++; map[cont][0]=a; map[cont][1]=road[b]; map[cont][2]=len; road[b]=cont; return 0; } struct cmp{ bool operator()(const node &a,const node &b) { return a.dis>b.dis; } }; int dijk() { for(int i=1;i<=cnt;i++)dis[i]=100000000000000; dis[st]=0; t[1].id=st; t[1].dis=0; long long int pp=1; while(pp>=1) { pop_heap(t+1,t+pp+1,cmp()); long long int x=t[pp].id,len=t[pp].dis; pp--; if(len!=dis[x]) { continue; } //cout<<x<<" "<<len<<" "<<p[x]<<endl; long long int g=road[x]; while(g!=-1){ long long int now=map[g][0]; //cout<<now<<" "<<dis[now]<<" "<<p[now]<<" "<<hp[now]<<endl; if(len+map[g][2]<dis[now]){ dis[now]=len+map[g][2]; pp++; t[pp].id=now; t[pp].dis=dis[now]; push_heap(t+1,t+pp+1,cmp()); } g=map[g][1]; } //cout<<endl; } return 0; } bool cmp2(Node a,Node b) { return a.h<b.h; } 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) { n=x.size(); m=l.size(); for(int i=0;i<=min((long long int)10000000,n*m);i++)road[i]=-1; for(int i=0;i<n;i++)pointer[i]=-1; st=0; for(int i=0;i<m;i++){ cnt++; num[l[i]]++; p[cnt]=l[i]; hp[cnt]=y[i]; cntp++; data[cntp][0]=cnt; data[cntp][1]=y[i]; data[cntp][2]=pointer[l[i]]; pointer[l[i]]=cntp; long long int pr=cnt,prex=x[l[i]]; for(int j=l[i]+1;j<=r[i];j++){ if(h[j]>=y[i]) { cnt++; cntp++; data[cntp][0]=cnt; data[cntp][1]=y[i]; data[cntp][2]=pointer[j]; pointer[j]=cntp; connect(cnt,pr,x[j]-prex); pr=cnt; prex=x[j]; } } } cnt++; st=cnt; cntp++; data[cntp][0]=cnt; data[cntp][1]=0; data[cntp][2]=pointer[s]; pointer[s]=cntp; cnt++; cntp++; data[cntp][0]=cnt; data[cntp][1]=0; data[cntp][2]=pointer[g]; pointer[g]=cntp; for(int i=0;i<n;i++) { long long int g=pointer[i],tmpcount=0; while(g!=-1) { tmpcount++; tmp[tmpcount].id=data[g][0]; tmp[tmpcount].h=data[g][1]; g=data[g][2]; } sort(tmp+1,tmp+tmpcount+1,cmp2); //for(int j=1;j<=tmpcount;j++)cout<<tmp[j].id<<" "<<tmp[j].h<<" "; //cout<<endl; for(int j=1;j<tmpcount;j++) { connect(tmp[j].id,tmp[j+1].id,tmp[j+1].h-tmp[j].h); } //cout<<endl; } dijk(); if(dis[cnt]==100000000000000)return -1; return dis[cnt]; }

컴파일 시 표준 에러 (stderr) 메시지

walk.cpp:14:1: error: expected initializer before 'int'
 int connect(int a,int b,long long int len)
 ^~~
walk.cpp: In function 'int dijk()':
walk.cpp:37:25: error: 'dis' was not declared in this scope
  for(int i=1;i<=cnt;i++)dis[i]=100000000000000;
                         ^~~
walk.cpp:37:25: note: suggested alternative: 'div'
  for(int i=1;i<=cnt;i++)dis[i]=100000000000000;
                         ^~~
                         div
walk.cpp:38:2: error: 'dis' was not declared in this scope
  dis[st]=0;
  ^~~
walk.cpp:38:2: note: suggested alternative: 'div'
  dis[st]=0;
  ^~~
  div
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:76:48: error: no matching function for call to 'min(long long int, int)'
  for(int i=0;i<=min((long long int)10000000,n*m);i++)road[i]=-1;
                                                ^
In file included from /usr/include/c++/7/vector:60:0,
                 from walk.h:4,
                 from walk.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
walk.cpp:76:48: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
  for(int i=0;i<=min((long long int)10000000,n*m);i++)road[i]=-1;
                                                ^
In file included from /usr/include/c++/7/vector:60:0,
                 from walk.h:4,
                 from walk.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
walk.cpp:76:48: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
  for(int i=0;i<=min((long long int)10000000,n*m);i++)road[i]=-1;
                                                ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from walk.cpp:3:
/usr/include/c++/7/bits/stl_algo.h:3450:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
walk.cpp:76:48: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  for(int i=0;i<=min((long long int)10000000,n*m);i++)road[i]=-1;
                                                ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from walk.cpp:3:
/usr/include/c++/7/bits/stl_algo.h:3456:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3456:5: note:   template argument deduction/substitution failed:
walk.cpp:76:48: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
  for(int i=0;i<=min((long long int)10000000,n*m);i++)road[i]=-1;
                                                ^
walk.cpp:100:5: error: 'connect' was not declared in this scope
     connect(cnt,pr,x[j]-prex);
     ^~~~~~~
walk.cpp:100:5: note: suggested alternative: 'cont'
     connect(cnt,pr,x[j]-prex);
     ^~~~~~~
     cont
walk.cpp:137:4: error: 'connect' was not declared in this scope
    connect(tmp[j].id,tmp[j+1].id,tmp[j+1].h-tmp[j].h);
    ^~~~~~~
walk.cpp:137:4: note: suggested alternative: 'cont'
    connect(tmp[j].id,tmp[j+1].id,tmp[j+1].h-tmp[j].h);
    ^~~~~~~
    cont
walk.cpp:143:5: error: 'dis' was not declared in this scope
  if(dis[cnt]==100000000000000)return -1;
     ^~~
walk.cpp:143:5: note: suggested alternative: 'div'
  if(dis[cnt]==100000000000000)return -1;
     ^~~
     div
walk.cpp:144:9: error: 'dis' was not declared in this scope
  return dis[cnt];
         ^~~
walk.cpp:144:9: note: suggested alternative: 'div'
  return dis[cnt];
         ^~~
         div