Submission #539419

#TimeUsernameProblemLanguageResultExecution timeMemory
539419AntekbGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++14
100 / 100
132 ms41060 KiB
#include<bits/stdc++.h> using namespace std; int ans; string s; int main(){ int n; cin>>n; cin>>s; vector<int> V[3]; vector<int> ile[3]; for(int i=0; i<n; i++){ int c=0; if(s[i]=='Y')c=1; if(s[i]=='R')c=2; V[c].push_back(i); for(int j=0; j<3; j++)ile[j].push_back(V[j].size()); } vector<vector<vector<vector<int> > > > dp(3, vector<vector<vector<int> > >(V[0].size()+1 , vector<vector<int>>(V[1].size()+1, vector<int>(V[2].size()+1, 1e9)))); dp[0][0][0][0]=dp[1][0][0][0]=dp[2][0][0][0]=0; for(int s=1; s<=n; s++){ for(int i=0; i<=V[0].size(); i++){ for(int j=0; j<=V[1].size(); j++){ //for(int k=0; k<=V[2].size(); k++){ int k=s-i-j; if(k<0 || k>V[2].size())continue; //if(!k && !i && !j)continue; if(i)dp[0][i][j][k]=min(dp[1][i-1][j][k], dp[2][i-1][j][k])+abs(j-ile[1][V[0][i-1]])+abs(k-ile[2][V[0][i-1]]); if(j)dp[1][i][j][k]=min(dp[0][i][j-1][k], dp[2][i][j-1][k])+abs(i-ile[0][V[1][j-1]])+abs(k-ile[2][V[1][j-1]]); if(k)dp[2][i][j][k]=min(dp[1][i][j][k-1], dp[0][i][j][k-1])+abs(j-ile[1][V[2][k-1]])+abs(i-ile[0][V[2][k-1]]); //} //cout<<i<<" "<<j<<" "<<k<<" "<<dp[0][i][j][k]<<" "<<dp[1][i][j][k]<<" "<<dp[2][i][j][k]<<"\n"; } } } int a=V[0].size(), b=V[1].size(), c=V[2].size(); //cout<<a<<" "<<b<<" "<<c<<" "; int k=min({dp[0][a][b][c], dp[1][a][b][c], dp[2][a][b][c]}); if(k>=1e9)cout<<-1; else cout<<k/2; //assert((k&1)==0); }

Compilation message (stderr)

joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:23:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |     for(int i=0; i<=V[0].size(); i++){
      |                  ~^~~~~~~~~~~~~
joi2019_ho_t3.cpp:24:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |         for(int j=0; j<=V[1].size(); j++){
      |                      ~^~~~~~~~~~~~~
joi2019_ho_t3.cpp:27:28: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |                 if(k<0 || k>V[2].size())continue;
      |                           ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...