제출 #1338422

#제출 시각아이디문제언어결과실행 시간메모리
1338422settopWiring (IOI17_wiring)C++20
컴파일 에러
0 ms0 KiB
#include "wiring.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define all(x) x.begin(),x.end()
#define F first
#define S second
#define sz(x) (int)x.size()
#define pb push_back
const int MAXN=2e2+10;
const ll inf=1e16;
typedef pair<int,int> pii;

ll dp[MAXN][MAXN],close[MAXN],cl[MAXN];

long long min_total_length(std::vector<int> r, std::vector<int> b){
	int n=sz(r),m=sz(b); sort(all(r)); sort(all(b));
	fall(i,0,n-1){
		close[i]=inf;
		fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
	}
	fall(j,0,m-1){
		cl[j]=inf;
		fall(i,0,n-1) cl[j]=min(cl[j],1ll*abs(r[i]-b[j]));
	}

	fall(i,0,n)
		fall(j,0,m) dp[i][j]=inf;
	dp[0][0]=0;
	fall(i,0,n)
		fall(j,0,m){
			if(max(i,j)==0) continue;
			if(i) dp[i][j]=dp[i-1][j]+close[i-1];
			if(j) dp[i][j]=min(dp[i][j],dp[i][j-1]+cl[j-1]);
			if(i && j) dp[i][j]=min(dp[i][j],dp[i-1][j-1]+abs(r[i-1]-b[j-1]));
		}
	return dp[n][m];
}

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

wiring.cpp:18:29: error: 'long long int close [210]' redeclared as different kind of entity
   18 | ll dp[MAXN][MAXN],close[MAXN],cl[MAXN];
      |                             ^
In file included from /usr/include/c++/13/bits/atomic_wait.h:45,
                 from /usr/include/c++/13/bits/atomic_base.h:42,
                 from /usr/include/c++/13/bits/shared_ptr_atomic.h:33,
                 from /usr/include/c++/13/memory:81,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:56,
                 from wiring.cpp:2:
/usr/include/unistd.h:358:12: note: previous declaration 'int close(int)'
  358 | extern int close (int __fd);
      |            ^~~~~
wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:23:24: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   23 |                 close[i]=inf;
      |                        ^
wiring.cpp:23:25: error: assignment of read-only location '*(close + ((sizetype)i))'
   23 |                 close[i]=inf;
      |                 ~~~~~~~~^~~~
wiring.cpp:24:38: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                      ^
wiring.cpp:24:51: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                                   ^
wiring.cpp:24:43: error: no matching function for call to 'min(int (&)(int), long long int)'
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/vector:62,
                 from wiring.h:1,
                 from wiring.cpp:1:
/usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
wiring.cpp:24:43: note:   deduced conflicting types for parameter 'const _Tp' ('int(int)' and 'long long int')
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note:   template argument deduction/substitution failed:
wiring.cpp:24:43: note:   deduced conflicting types for parameter 'const _Tp' ('int(int)' and 'long long int')
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51:
/usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5775 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5775:5: note:   template argument deduction/substitution failed:
wiring.cpp:24:43: note:   mismatched types 'std::initializer_list<_Tp>' and 'int (*)(int)'
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5785 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note:   template argument deduction/substitution failed:
wiring.cpp:24:43: note:   mismatched types 'std::initializer_list<_Tp>' and 'int (*)(int)'
   24 |                 fall(j,0,m-1) close[i]=min(close[i],1ll*abs(r[i]-b[j]));
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wiring.cpp:37:60: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   37 |                         if(i) dp[i][j]=dp[i-1][j]+close[i-1];
      |                                                            ^
cc1plus: warning: pointer to a function used in arithmetic [-Wpointer-arith]
wiring.cpp:37:50: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   37 |                         if(i) dp[i][j]=dp[i-1][j]+close[i-1];
      |                                        ~~~~~~~~~~^~~~~~~~~~~
wiring.cpp:37:50: error: invalid conversion from 'int (*)(int)' to 'long long int' [-fpermissive]
   37 |                         if(i) dp[i][j]=dp[i-1][j]+close[i-1];
      |                                        ~~~~~~~~~~^~~~~~~~~~~
      |                                                  |
      |                                                  int (*)(int)