Submission #232229

#TimeUsernameProblemLanguageResultExecution timeMemory
232229Andrei_CotorGrowing Vegetable is Fun 3 (JOI19_ho_t3)C++11
100 / 100
103 ms194352 KiB
#include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> Poz[3]; vector<pair<int,int> > Coresp[3]; int Dp[3][405][405][405]; int getSwaps(int wh, int fir, int sec, int i, int j, int k) { int rez=0; rez=rez+max(0,Coresp[wh][i-1].first-j+1); //cati fir au ramas neasezati pana la i rez=rez+max(0,Coresp[wh][i-1].second-k+1); return rez; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; for(int i=1; i<=n; i++) { char c; cin>>c; if(c=='R') { Poz[0].push_back(i); Coresp[0].push_back({Poz[1].size()-1,Poz[2].size()-1}); } else if(c=='G') { Poz[1].push_back(i); Coresp[1].push_back({Poz[0].size()-1,Poz[2].size()-1}); } else { Poz[2].push_back(i); Coresp[2].push_back({Poz[0].size()-1,Poz[1].size()-1}); } } for(int i=0; i<=Poz[0].size(); i++) { for(int j=0; j<=Poz[1].size(); j++) { for(int k=0; k<=Poz[2].size(); k++) { Dp[0][i][j][k]=Dp[1][i][j][k]=Dp[2][i][j][k]=1000000000; } } } Dp[0][0][0][0]=Dp[1][0][0][0]=Dp[2][0][0][0]=0; for(int i=0; i<=Poz[0].size(); i++) { for(int j=0; j<=Poz[1].size(); j++) { for(int k=0; k<=Poz[2].size(); k++) { if(i<Poz[0].size()) { Dp[0][i+1][j][k]=min(Dp[0][i+1][j][k],min(Dp[1][i][j][k],Dp[2][i][j][k])+getSwaps(0,1,2,i+1,j,k)); } if(j<Poz[1].size()) { Dp[1][i][j+1][k]=min(Dp[1][i][j+1][k],min(Dp[0][i][j][k],Dp[2][i][j][k])+getSwaps(1,0,2,j+1,i,k)); } if(k<Poz[2].size()) { Dp[2][i][j][k+1]=min(Dp[2][i][j][k+1],min(Dp[0][i][j][k],Dp[1][i][j][k])+getSwaps(2,0,1,k+1,i,j)); } } } } int rez=min(Dp[0][Poz[0].size()][Poz[1].size()][Poz[2].size()],min(Dp[1][Poz[0].size()][Poz[1].size()][Poz[2].size()],Dp[2][Poz[0].size()][Poz[1].size()][Poz[2].size()])); if(rez==1000000000) rez=-1; cout<<rez<<"\n"; return 0; }

Compilation message (stderr)

joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:50:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<=Poz[0].size(); i++)
                  ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:52:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0; j<=Poz[1].size(); j++)
                      ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:54:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int k=0; k<=Poz[2].size(); k++)
                          ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:62:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<=Poz[0].size(); i++)
                  ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:64:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j=0; j<=Poz[1].size(); j++)
                      ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:66:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int k=0; k<=Poz[2].size(); k++)
                          ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:68:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if(i<Poz[0].size())
                    ~^~~~~~~~~~~~~~
joi2019_ho_t3.cpp:73:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if(j<Poz[1].size())
                    ~^~~~~~~~~~~~~~
joi2019_ho_t3.cpp:78:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if(k<Poz[2].size())
                    ~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...