제출 #294170

#제출 시각아이디문제언어결과실행 시간메모리
294170Muhammetali통행료 (IOI18_highway)C++11
컴파일 에러
0 ms0 KiB
#include "highway.h" #include <bits/stdc++.h> #define mp make_pair #define f first #define s second #define sz(x) (int)(x).size() #define rsz resize #define ins insert #define ft front() #define bk back() #define pf push_front #define pb push_back #define eb emplace_back #define lb lower_bound #define ub upper_bound using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pi; typedef pair<ll,ll> pl; typedef vector<int> vi; typedef vector<bool> vb; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; template<class T>bool tmin(T& a,T b){if(a>b){a=b;return 1;}return 0;} template<class T>bool tmax(T& a,T b){if(a<b){a=b;return 1;}return 0;} vpl con[100000]; vi w,tree[2]; ll k; bool vis[100000]; int func(vector<int>& v,vector<int>& u,vector<int>& v) { int l=0;int r=sz(v)-1; bool find[100000]; while(l<r) { int mid=l+r/2; for (int i=l;i<=mid;i++) { find[i]=1; } for (int i=0;i<sz(u);i++) { if (find[u[i]]!=find[v[i]]) { w[i]=1; } } if (k!=ask(w)) r=mid; else l=mid+1; for (int i=0;i<sz(u);i++) w[i]=0; for (int i=l;i<=mid;i++) find[i]=0; } return v[l]; } void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) { for (int i=0;i<sz(U);i++) { con[U[i]].pb({V[i],i}); con[V[i]].pb({U[i],i}); } w.resize(sz(U)); k=ask(w); int l=0;int r=sz(U)-1; while(l<r) { int mid=l+r/2; for (int i=l;i<=mid;i++) w[i]=1; if (k!=ask(w)) r=mid; else l=mid+1; for (int i=l;i<=mid;i++) w[i]=0; } queue<pl> q; q.push({0,U[l]}); q.push({1,V[l]}); vis[U[l]]=vis[V[l]]=1; while(sz(q)) { int bar=q.front().f; int la=q.front().s; q.pop(); tree[bar].pb(la); for (auto i:con[la]) { if (!vis[i.f]) { vis[i.f]=1; q.push({bar,i.f}); } } } answer(func(tree[0],U,V),func(tree[1],U,V)); }

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

highway.cpp:32:53: error: redefinition of 'std::vector<int>& v'
   32 | int func(vector<int>& v,vector<int>& u,vector<int>& v)
      |                                        ~~~~~~~~~~~~~^
highway.cpp:32:23: note: 'std::vector<int>& v' previously declared here
   32 | int func(vector<int>& v,vector<int>& u,vector<int>& v)
      |          ~~~~~~~~~~~~~^
highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:94:25: error: too many arguments to function 'int func(std::vector<int>&, std::vector<int>&)'
   94 |  answer(func(tree[0],U,V),func(tree[1],U,V));
      |                         ^
highway.cpp:32:5: note: declared here
   32 | int func(vector<int>& v,vector<int>& u,vector<int>& v)
      |     ^~~~
highway.cpp:94:43: error: too many arguments to function 'int func(std::vector<int>&, std::vector<int>&)'
   94 |  answer(func(tree[0],U,V),func(tree[1],U,V));
      |                                           ^
highway.cpp:32:5: note: declared here
   32 | int func(vector<int>& v,vector<int>& u,vector<int>& v)
      |     ^~~~