Submission #581576

# Submission time Handle Problem Language Result Execution time Memory
581576 2022-06-22T18:47:56 Z HeyYouNotYouYou Miners (IOI07_miners) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 100001,INF=1e12;
int n;
string s;
int dp[N][41][41];
map<string,int>st;
map<int,string>ori;
void states(){
  char you[3]={'M','F','B'};
  int cnt=1;
  ori[cnt]="M";
  st["M"]=cnt++;

  ori[cnt]="B";
  st["B"]=cnt++;

  ori[cnt]="F";
  st["F"]=cnt++;

  ori[cnt]="MM";
  st["MM"]=cnt++;

  ori[cnt]="MB";
  st["MB"]=cnt++;

  ori[cnt]="MF";
  st["MF"]=cnt++;

  ori[cnt]="FB";
  st["FB"]=cnt++;

  ori[cnt]="FM";
  st["FM"]=cnt++;

  ori[cnt]="FF";
  st["FF"]=cnt++;

  ori[cnt]="BF";
  st["BF"]=cnt++;

  ori[cnt]="BB";
  st["BB"]=cnt++;

  ori[cnt]="BM";
  st["BM"]=cnt++;

  for(int i = 0 ; i < 3 ; i ++)
    for(int j = 0 ; j < 3 ; j ++)
      for(int k = 0 ; k < 3 ; k ++)
      {
        string y="";
        y+=you[i]; y+=you[j]; y+=you[k]; st[y]=cnt,ori[cnt]=y,cnt++;
      }

  //for(auto it=st.begin();it!=st.end();it++) cout<<it->first<<" "<<it->second<<endl;
}
int solve(int i,int state1,int state2)
{
  //cout<<i<<" "<<state1<<" "<<state2<<endl;
  if(i==n) return 0;
  int ans=0;
  if(dp[i][state1][state2]!=-1) return dp[i][state1][state2];
  char x = s[i];

    if(ori[state1].size()<3){
      string curstate = ori[state1];
      curstate+=s[i];
      set<char>diff;
      for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      ans=solve(i+1,st[curstate],state2)+diff.size();
    }
    else if(ori[state1].size()==3)
    {
      string curstate=""; curstate+=ori[state1][1] , curstate+=ori[state1][2];
      curstate+=s[i];
      set<char>diff;
      for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      ans=solve(i+1,st[curstate],state2)+diff.size();
    }

    if(ori[state2].size()<3){
      string curstate=ori[state2];
      curstate+=s[i];
      set<char>diff;
      for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
    }
    else if(ori[state2].size()==3)
    {
      string curstate=""; curstate+=ori[state2][1] , curstate+=ori[state2][2];
      curstate+=s[i];
      set<char>diff;
      for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
    }
    return dp[i][state1][state2]=ans;
}
int32_t main()
{
  //freopen("abc.in", "r", stdin);
  cin >> n ;
  cin>>s;
  memset(dp,-1,sizeof dp);
  states();
  cout<<solve(0,0,0);
}

Compilation message

miners.cpp: In function 'long long int solve(long long int, long long int, long long int)':
miners.cpp:72:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |       for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      |                       ~~^~~~~~~~~~~~~~~~~
miners.cpp:80:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |       for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      |                       ~~^~~~~~~~~~~~~~~~~
miners.cpp:88:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |       for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      |                       ~~^~~~~~~~~~~~~~~~~
miners.cpp:89:61: error: no matching function for call to 'max(long long int&, long long unsigned int)'
   89 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
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 miners.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:
miners.cpp:89:61: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
   89 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
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 miners.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:
miners.cpp:89:61: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
   89 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from miners.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:
miners.cpp:89:61: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   89 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from miners.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:
miners.cpp:89:61: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   89 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
miners.cpp:96:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   96 |       for(int i = 0 ; i < curstate.size() ; i++) diff.insert(curstate[i]);
      |                       ~~^~~~~~~~~~~~~~~~~
miners.cpp:97:61: error: no matching function for call to 'max(long long int&, long long unsigned int)'
   97 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
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 miners.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:
miners.cpp:97:61: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
   97 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
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 miners.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:
miners.cpp:97:61: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long long unsigned int')
   97 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from miners.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:
miners.cpp:97:61: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   97 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from miners.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:
miners.cpp:97:61: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   97 |       ans=max(ans,solve(i+1,state1,st[curstate])+diff.size());
      |                                                             ^
miners.cpp:66:8: warning: unused variable 'x' [-Wunused-variable]
   66 |   char x = s[i];
      |        ^