Submission #57920

#TimeUsernameProblemLanguageResultExecution timeMemory
57920red1108구간 성분 (KOI15_interval)C++17
Compilation error
0 ms0 KiB
#include <iostream> #include <unordered_map> #include <string> #include <algorithm> using namespace std; unordered_map<char,int> prime; string a, b; int cnt[27],atop,btop,h[27]; struct data{ int value; int s, e; }ah[2500000],bh[2500000]; int asum[30][1600],bsum[30][1600]; bool cmp(data A, data B) { return A.value<B.value; } void init() { h[0]=18461; h[1]=1237; h[2]=17401; h[3]=1259; h[4]=18181; h[5]=1327; h[6]=1493; h[7]=17903; h[8]=1039; h[9]=1499; h[10]=1051; h[11]=1453; h[12]=1283; h[13]=1123; h[14]=4007; h[15]=3697; h[16]=3343; h[17]=3931; h[18]=3889; h[19]=3917; h[20]=3527; h[21]=4057; h[22]=17713; h[23]=17021; h[24]=18367; h[25]=1423; } int main() { init(); ios_base::sync_with_stdio(false); cin.tie(0); int i, j,l,hashing,k,flag,x,get=0,kc; cin>>a; cin>>b; for(i=0;i<26;i++) { for(j=0;j<a.size();j++){asum[i][j]=a[j]-'a'==i?asum[i][j-1]+1:asum[i][j-1];} } for(i=0;i<26;i++) { for(j=0;j<b.size();j++){bsum[i][j]=b[j]-'a'==i?bsum[i][j-1]+1:bsum[i][j-1];} } l=min(a.size(),b.size()); for(i=l;i>=1;i--) { hashing=0; for(j=0;j<i;j++) {hashing+=h[a[j]-'a'];} for(j=i-1;j<a.size();j++) { ah[++atop].value=hashing; ah[atop].s=j-i+1; ah[atop].e=j; hashing+=h[a[j+1]-'a']; hashing-=h[a[j-i+1]-'a']; } hashing=0; for(j=0;j<i;j++) {hashing+=h[b[j]-'a'];} for(j=i-1;j<b.size();j++) { bh[++btop].value=hashing; bh[btop].s=j-i+1; bh[btop].e=j; hashing+=h[b[j+1]-'a']; hashing-=h[b[j-i+1]-'a']; } sort(ah+1,ah+atop+1,cmp); sort(bh+1,bh+btop+1,cmp); k=1; for(j=1;j<=atop;j++) { while(bh[k].value<ah[j].value&&k<b.size()) k++; if(k>=b.size()) break; if(bh[k].value>ah[j].value) continue; kc=k; while(bh[k].value==ah[j].value&&k<b.size()) { flag=1; for(x=0;x<26;x++) { if(asum[x][ah[j].e]-asum[x][ah[j].s-1]!=bsum[x][bh[k].e]-bsum[x][bh[k].s-1]){flag=0;break;} } if(flag) { get=1; break; } k++; } if(get) { printf("%d\n", i); return 0; } if(ah[j].value==ah[j+1].value) k=kc; } } printf("0"); }

Compilation message (stderr)

interval.cpp:14:10: error: reference to 'data' is ambiguous
 bool cmp(data A, data B)
          ^~~~
interval.cpp:9:8: note: candidates are: struct data
 struct data{
        ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from interval.cpp:1:
/usr/include/c++/7/bits/range_access.h:318:5: note:                 template<class _Tp> constexpr const _Tp* std::data(std::initializer_list<_Tp>)
     data(initializer_list<_Tp> __il) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:309:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::data(_Tp (&)[_Nm])
     data(_Tp (&__array)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:299:5: note:                 template<class _Container> constexpr decltype (__cont.data()) std::data(const _Container&)
     data(const _Container& __cont) noexcept(noexcept(__cont.data()))
     ^~~~
/usr/include/c++/7/bits/range_access.h:289:5: note:                 template<class _Container> constexpr decltype (__cont.data()) std::data(_Container&)
     data(_Container& __cont) noexcept(noexcept(__cont.data()))
     ^~~~
interval.cpp:14:18: error: reference to 'data' is ambiguous
 bool cmp(data A, data B)
                  ^~~~
interval.cpp:9:8: note: candidates are: struct data
 struct data{
        ^~~~
In file included from /usr/include/c++/7/string:51:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from interval.cpp:1:
/usr/include/c++/7/bits/range_access.h:318:5: note:                 template<class _Tp> constexpr const _Tp* std::data(std::initializer_list<_Tp>)
     data(initializer_list<_Tp> __il) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:309:5: note:                 template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::data(_Tp (&)[_Nm])
     data(_Tp (&__array)[_Nm]) noexcept
     ^~~~
/usr/include/c++/7/bits/range_access.h:299:5: note:                 template<class _Container> constexpr decltype (__cont.data()) std::data(const _Container&)
     data(const _Container& __cont) noexcept(noexcept(__cont.data()))
     ^~~~
/usr/include/c++/7/bits/range_access.h:289:5: note:                 template<class _Container> constexpr decltype (__cont.data()) std::data(_Container&)
     data(_Container& __cont) noexcept(noexcept(__cont.data()))
     ^~~~
interval.cpp:14:24: error: expression list treated as compound expression in initializer [-fpermissive]
 bool cmp(data A, data B)
                        ^
interval.cpp: In function 'int main()':
interval.cpp:57:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=0;j<a.size();j++){asum[i][j]=a[j]-'a'==i?asum[i][j-1]+1:asum[i][j-1];}
                 ~^~~~~~~~~
interval.cpp:61:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=0;j<b.size();j++){bsum[i][j]=b[j]-'a'==i?bsum[i][j-1]+1:bsum[i][j-1];}
                 ~^~~~~~~~~
interval.cpp:68:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=i-1;j<a.size();j++)
                   ~^~~~~~~~~
interval.cpp:78:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(j=i-1;j<b.size();j++)
                   ~^~~~~~~~~
interval.cpp:91:45: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             while(bh[k].value<ah[j].value&&k<b.size()) k++;
                                            ~^~~~~~~~~
interval.cpp:92:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(k>=b.size()) break;
                ~^~~~~~~~~~
interval.cpp:95:46: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             while(bh[k].value==ah[j].value&&k<b.size())
                                             ~^~~~~~~~~
In file included from /usr/include/c++/7/bits/stl_algobase.h:71:0,
                 from /usr/include/c++/7/bits/char_traits.h:39,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from interval.cpp:1:
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of 'constexpr bool __gnu_cxx::__ops::_Iter_comp_iter<_Compare>::operator()(_Iterator1, _Iterator2) [with _Iterator1 = data*; _Iterator2 = data*; _Compare = bool]':
/usr/include/c++/7/bits/stl_algo.h:81:17:   required from 'void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1921:34:   required from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1953:38:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = data*; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1968:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:4868:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = data*; _Compare = bool]'
interval.cpp:86:32:   required from here
/usr/include/c++/7/bits/predefined_ops.h:143:18: error: expression cannot be used as a function
         { return bool(_M_comp(*__it1, *__it2)); }
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Val_comp_iter<_Compare>::operator()(_Value&, _Iterator) [with _Value = data; _Iterator = data*; _Compare = bool]':
/usr/include/c++/7/bits/stl_algo.h:1828:20:   required from 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Val_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1855:36:   required from 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1885:25:   required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1971:31:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:4868:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = data*; _Compare = bool]'
interval.cpp:86:32:   required from here
/usr/include/c++/7/bits/predefined_ops.h:215:11: error: expression cannot be used as a function
  { return bool(_M_comp(__val, *__it)); }
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_comp_val<_Compare>::operator()(_Iterator, _Value&) [with _Iterator = data*; _Value = data; _Compare = bool]':
/usr/include/c++/7/bits/stl_heap.h:133:48:   required from 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = data*; _Distance = long int; _Tp = data; _Compare = __gnu_cxx::__ops::_Iter_comp_val<bool>]'
/usr/include/c++/7/bits/stl_heap.h:237:23:   required from 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = data*; _Distance = long int; _Tp = data; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_heap.h:342:22:   required from 'void std::__make_heap(_RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1672:23:   required from 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1933:25:   required from 'void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1948:27:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = data*; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:1968:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = data*; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<bool>]'
/usr/include/c++/7/bits/stl_algo.h:4868:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = data*; _Compare = bool]'
interval.cpp:86:32:   required from here
/usr/include/c++/7/bits/predefined_ops.h:177:11: error: expression cannot be used as a function
  { return bool(_M_comp(*__it, __val)); }
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~