제출 #541436

#제출 시각아이디문제언어결과실행 시간메모리
541436AugustinasJucasNuclearia (CEOI15_nuclearia)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3") using namespace std; vector<vector<long long> > val; vector<vector<long long> > pref; int n, m, p, q; bool swp = 0; void precalc(){ for(int i = 0; i < n; i++) { long long s = 0; for(int j = 0; j < m; j++) { s += val[i][j]; pref[i][j] = (i == 0 ? 0ll : pref[i-1][j]) + s; } } } long long getSum(int e1, int s1, int e2, int s2) { long long ret = 0; ret += pref[e2][s2]; if(e1 != 0) { ret -= pref[e1-1][s2]; } if(s1 != 0){ ret -= pref[e2][s1-1]; } if(e1 != 0 && s1 != 0) { ret += pref[e1-1][s1-1]; } return ret; } long long rnd(long long x, long long y) { long long maz = x / y; x %= y; if(2ll*x >= y) maz++; return maz; } void maz () { for(int h = 0; h < p; h++) { long long e, s, a, b; cin >> s >> e >> a >> b; e--; s--; if(swp) swap(e, s); for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { val[i][j] += max(0ll, 1ll * a - 1ll * b * max(abs(i-e), abs(s-j))); } } } precalc(); cin >> q; while(q--) { int e1, s1, e2, s2; cin >> s1 >> e1 >> s2 >> e2; s1--; e1--; s2--; e2--; if(swp) { swap(e1, s1); swap(e2, s2); } long long sm = getSum(e1, s1, e2, s2); long long S = sm; long long pl = (1+abs(e1-e2)) * (abs(s1-s2)+1); long long ans = rnd(S, pl); cout << ans << "\n"; } } void doEil(int eil, int s, int nutol, long long a, long long b, vector<vector<long long> > &A, vector<vector<long long> > &B){ long long nl = a / b; long long prm = a % b; int le = max(s - nl, 0); int mid = s; int ri = min(s + nl, m-1); long long vL = a - b * max(abs(le - s), nutol); long long vR = a - b * max(abs(ri - s), nutol); A[eil][le] += vL; A[eil][ri+1] -= vR; if(le <= mid-nutol){ B[eil][le] += b; B[eil][mid-nutol] -= b; } if(mid+nutol <= ri){ B[eil][mid+nutol] -= b; B[eil][ri] += b; } } void h1(){ // vector<long long> A(m+2, 0), B(m+2, 0); vector<vector<long long> > A(n, vector<long long> (m+2, 0)), B(n, vector<long long> (m+2, 0)); for(int h = 0; h < p; h++) { long long e, s, a, b; cin >> s >> e >> a >> b; e--; s--; if(swp) { swap(e, s); } long long nl = a / b; for(int i = max(0ll, e-nl); i <= min(1ll*n-1, e+nl); i++) { doEil(i, s, abs(i-e), a, b, A, B); } } for(int j = 0; j < n; j++){ long long sitas = 0; long long delta = 0; for(int i = 0; i < m; i++) { sitas += A[j][i]; sitas += delta; val[j][i] = sitas; delta += B[j][i]; } } precalc(); cin >> q; while(q--) { int e1, s1, e2, s2; cin >> s1 >> e1 >> s2 >> e2; s1--; e1--; s2--; e2--; if(swp) { swap(e1, s1); swap(e2, s2); } long long sm = getSum(e1, s1, e2, s2); long long S = sm; long long pl = (1+abs(e1-e2)) * (abs(s1-s2)+1); long long ans = rnd(S, pl); cout << ans << "\n"; } } int main() { cin.tie(NULL); ios_base::sync_with_stdio(false); cin >> m >> n >> p; // noriu visada eiti per eilutes. t.y., n <= m turi galioti! if(n > m){ swap(n, m); swp = 1; } vector<vector<long long> > iden(n, vector<long long> (m, 0)); val = iden; pref = iden; h1(); return 0; if(n == 1) { h1(); return 0; }else if(1ll * m * n * p <= 100000000ll) { maz(); return 0; } return 0; }

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

nuclearia.cpp: In function 'void doEil(int, int, int, long long int, long long int, std::vector<std::vector<long long int> >&, std::vector<std::vector<long long int> >&)':
nuclearia.cpp:72:27: error: no matching function for call to 'max(long long int, int)'
   72 |     int le = max(s - nl, 0);
      |                           ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:72:27: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   72 |     int le = max(s - nl, 0);
      |                           ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:72:27: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   72 |     int le = max(s - nl, 0);
      |                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:72:27: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   72 |     int le = max(s - nl, 0);
      |                           ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:72:27: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   72 |     int le = max(s - nl, 0);
      |                           ^
nuclearia.cpp:74:29: error: no matching function for call to 'min(long long int, int)'
   74 |     int ri = min(s + nl, m-1);
      |                             ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:74:29: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   74 |     int ri = min(s + nl, m-1);
      |                             ^
In file included from /usr/include/c++/10/bits/char_traits.h:39,
                 from /usr/include/c++/10/ios:40,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:74:29: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   74 |     int ri = min(s + nl, m-1);
      |                             ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:74:29: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   74 |     int ri = min(s + nl, m-1);
      |                             ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from nuclearia.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
nuclearia.cpp:74:29: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   74 |     int ri = min(s + nl, m-1);
      |                             ^
nuclearia.cpp:70:15: warning: unused variable 'prm' [-Wunused-variable]
   70 |     long long prm = a % b;
      |               ^~~