제출 #416781

#제출 시각아이디문제언어결과실행 시간메모리
416781FerThugGato12500팀들 (IOI15_teams)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; const int lmt = 500005; const int MOD = 1000000007; #define f first #define S second #define ll long long #define ld long double #define ull unsigned long long #define forn(i, n) for(int i = 0; i < int(n); i++) #define for1(i, n) for(int i = 1; i < int(n); i++) #define forv(i,a,n) for(int i = int(a); i < int(n); i++) #define rof(i, n) for(int i = int(n); i >= 0; i--) #define rofv(i,a,n) for(int i = int(n); i >= int(a); i--) #define pb push_back #define ins insert #define pai pair<int, int> #define pal pair<long long, long long> #define vi vector<int> #define vl vector<long long> #define vld vector<long double> struct wer{ int A, B; }; bool operator < (const wer &a, const wer &b){ return a.A < b.A; } int n; wer p[lmt]; vi st[lmt*4]; int lessa[lmt*4]; struct ST{ void build(){ build(0,n-1,0); return; } void build(int ini, int fin, int ind){ if(ini==fin){ st[ind].pb(p[ini].B); return; } int mit = (ini+fin)/2, ls = (ind*2)+1, rs = (ind*2)+2; build(ini, mit, ls); build(mit+1, fin, rs); int a = 0, b = 0; while(a<st[ls].size() || b<st[rs].size()){ if(b==st[rs].size() || st[ls][a]>=st[rs][b]){ st[ind].pb(st[ls][a]); a++; }else{ st[ind].pb(st[rs][b]); b++; } } return; } int x, v, l; bool query(int stf, int stf2){ if(stf2==-1){ lessa[0]=0; return false; } x = v = stf; l = stf2; query(0, n-1, 0); if(v>0){ lessa[0] = 0; return false; } return true; } int find(int ind, int X){ int ini = lessa[ind], fin = st[ind].size()-1; if(st[ind][ini]<x){ return lessa[ind]-1; } while(ini+1<fin){ int mit = (ini+fin)/2; if(st[ind][mit]>=X){ ini = mit; }else{ fin = mit-1; } } if(st[ind][fin]>=X){ return fin; } return ini; } void upd(int ind){ int ls = (ind*2)+1, rs = (ind*2)+2; if(lessa[ind]==0) { lessa[ls] = lessa[rs] = 0; return; } int V = lessa[ind]; int t = st[ind][lessa[ind]-1]; int c = find(rs, t)+1; if(c<=V){ lessa[rs] = c; lessa[ls] = V-c; }else{ lessa[rs] = V; } return; } void query(int ini, int fin, int ind){ int mit = (ini+fin)/2, ls = (ind*2)+1, rs = (ind*2)+2; if(ini>l||fin<0){ return; } if(ini>=0 && fin<=l){ if(v==0) return; int r = (find(ind, x) - lessa[ind])+1; if(r<=v){ v-=r; lessa[ind] += r; }else{ lessa[ind] += v; v=0; } return; } upd(ind); query(mit+1, fin, rs); query(ini, mit, ls); return; } }; int alierputoxd[lmt]; ST mqun; void init(int N, vector<int> *A, vector<int> *B){ n=N; forn(i, n) p[i].A = A[i]; forn(i, n) p[i].B = B[i]; sort(p, p+n); forn(i, n-1){ if(p[i].A != p[i+1].A){ alierputoxd[p[i].A] = i; } } alierputoxd[p[n-1].A] = n-1; alierputoxd[0] = -1; for1(i,n+1){ if(!alierputoxd[i] && !(i == 1 && p[0].A==1)){ alierputoxd[i] = alierputoxd[i-1]; } } mqun.build(); return; } bool can(int k, vector<int> *Q){ sort(Q.begin(), Q.end()); reverse(Q.begin(), Q.end()); for(int x: Q){ if(!mqun.query(x, alierputoxd[x])){ return false; } } return true; }

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

teams.cpp: In member function 'void ST::build(int, int, int)':
teams.cpp:47:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |         while(a<st[ls].size() || b<st[rs].size()){
      |               ~^~~~~~~~~~~~~~
teams.cpp:47:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |         while(a<st[ls].size() || b<st[rs].size()){
      |                                  ~^~~~~~~~~~~~~~
teams.cpp:48:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |             if(b==st[rs].size() ||  st[ls][a]>=st[rs][b]){
      |                ~^~~~~~~~~~~~~~~
teams.cpp: In member function 'int ST::find(int, int)':
teams.cpp:73:51: warning: conversion from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'int' may change value [-Wconversion]
   73 |         int ini = lessa[ind], fin = st[ind].size()-1;
      |                                     ~~~~~~~~~~~~~~^~
teams.cpp: In function 'void init(int, std::vector<int>*, std::vector<int>*)':
teams.cpp:134:28: error: cannot convert 'std::vector<int>' to 'int' in assignment
  134 |     forn(i, n) p[i].A = A[i];
      |                         ~~~^
      |                            |
      |                            std::vector<int>
teams.cpp:135:28: error: cannot convert 'std::vector<int>' to 'int' in assignment
  135 |     forn(i, n) p[i].B = B[i];
      |                         ~~~^
      |                            |
      |                            std::vector<int>
teams.cpp: In function 'bool can(int, std::vector<int>*)':
teams.cpp:153:12: error: request for member 'begin' in 'Q', which is of pointer type 'std::vector<int>*' (maybe you meant to use '->' ?)
  153 |     sort(Q.begin(), Q.end());
      |            ^~~~~
teams.cpp:153:23: error: request for member 'end' in 'Q', which is of pointer type 'std::vector<int>*' (maybe you meant to use '->' ?)
  153 |     sort(Q.begin(), Q.end());
      |                       ^~~
teams.cpp:154:15: error: request for member 'begin' in 'Q', which is of pointer type 'std::vector<int>*' (maybe you meant to use '->' ?)
  154 |     reverse(Q.begin(), Q.end());
      |               ^~~~~
teams.cpp:154:26: error: request for member 'end' in 'Q', which is of pointer type 'std::vector<int>*' (maybe you meant to use '->' ?)
  154 |     reverse(Q.begin(), Q.end());
      |                          ^~~
teams.cpp:155:16: error: no matching function for call to 'begin(std::vector<int>*&)'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/c++/10/bits/range_access.h:36,
                 from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 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 teams.cpp:1:
/usr/include/c++/10/initializer_list:90:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)'
   90 |     begin(initializer_list<_Tp> __ils) noexcept
      |     ^~~~~
/usr/include/c++/10/initializer_list:90:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types 'std::initializer_list<_Tp>' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 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 teams.cpp:1:
/usr/include/c++/10/bits/range_access.h:51:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(_Container&)'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:51:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(_Container&) [with _Container = std::vector<int>*]':
teams.cpp:155:16:   required from here
/usr/include/c++/10/bits/range_access.h:51:50: error: request for member 'begin' in '__cont', which is of pointer type 'std::vector<int>*' (maybe you meant to use '->' ?)
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |                                           ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(const _Container&)'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.begin()) std::begin(const _Container&) [with _Container = std::vector<int>*]':
teams.cpp:155:16:   required from here
/usr/include/c++/10/bits/range_access.h:61:56: error: request for member 'begin' in '__cont', which is of pointer type 'std::vector<int>* const' (maybe you meant to use '->' ?)
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |                                                 ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::begin(_Tp (&)[_Nm])'
   90 |     begin(_Tp (&__arr)[_Nm])
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types '_Tp [_Nm]' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from teams.cpp:1:
/usr/include/c++/10/valarray:1214:5: note: candidate: 'template<class _Tp> _Tp* std::begin(std::valarray<_Tp>&)'
 1214 |     begin(valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1214:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types 'std::valarray<_Tp>' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from teams.cpp:1:
/usr/include/c++/10/valarray:1224:5: note: candidate: 'template<class _Tp> const _Tp* std::begin(const std::valarray<_Tp>&)'
 1224 |     begin(const valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1224:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types 'const std::valarray<_Tp>' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
teams.cpp:155:16: error: no matching function for call to 'end(std::vector<int>*&)'
In file included from /usr/include/c++/10/bits/range_access.h:36,
                 from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 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 teams.cpp:1:
/usr/include/c++/10/initializer_list:101:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)'
  101 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
/usr/include/c++/10/initializer_list:101:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types 'std::initializer_list<_Tp>' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 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 teams.cpp:1:
/usr/include/c++/10/bits/range_access.h:71:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&)'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:71:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.end()) std::end(_Container&) [with _Container = std::vector<int>*]':
teams.cpp:155:16:   required from here
/usr/include/c++/10/bits/range_access.h:71:48: error: request for member 'end' in '__cont', which is of pointer type 'std::vector<int>*' (maybe you meant to use '->' ?)
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |                                         ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:81:5: note: candidate: 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&)'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:81:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> constexpr decltype (__cont.end()) std::end(const _Container&) [with _Container = std::vector<int>*]':
teams.cpp:155:16:   required from here
/usr/include/c++/10/bits/range_access.h:81:54: error: request for member 'end' in '__cont', which is of pointer type 'std::vector<int>* const' (maybe you meant to use '->' ?)
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |                                               ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:100:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])'
  100 |     end(_Tp (&__arr)[_Nm])
      |     ^~~
/usr/include/c++/10/bits/range_access.h:100:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types '_Tp [_Nm]' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from teams.cpp:1:
/usr/include/c++/10/valarray:1234:5: note: candidate: 'template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)'
 1234 |     end(valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1234:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types 'std::valarray<_Tp>' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from teams.cpp:1:
/usr/include/c++/10/valarray:1244:5: note: candidate: 'template<class _Tp> const _Tp* std::end(const std::valarray<_Tp>&)'
 1244 |     end(const valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1244:5: note:   template argument deduction/substitution failed:
teams.cpp:155:16: note:   mismatched types 'const std::valarray<_Tp>' and 'std::vector<int>*'
  155 |     for(int x: Q){
      |                ^
teams.cpp:152:14: warning: unused parameter 'k' [-Wunused-parameter]
  152 | bool can(int k, vector<int> *Q){
      |          ~~~~^