제출 #539419

#제출 시각아이디문제언어결과실행 시간메모리
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);
}

컴파일 시 표준 에러 (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...