Hatena::Grouptopcoder

yakk512の日記

 | 

2014-07-21

SRM#620Div2

22:43

練習練習

Easy

 概要

  M個のパラメータを持ったN人がいる.

m番目のパラメータでソートしてN人を順序づける.

 解法的な

  指定されたパラメータでソートする

  ソートする前のインデックスを返す必要があるので,pairを使う.

 コード

class CandidatesSelectionEasy {
public:
 
vector <int> sort(vector <string> score, int x)
{
 
vector< pair<string,int> > SortedScores(score.size());
 
for(int i = 0; i < score.size(); i++)
{
SortedScores[i].first = score[i].substr(x , 1);
SortedScores[i].second = i;
}
 
vector<int> ans(score.size());
 
std::sort( SortedScores.begin() , SortedScores.end() );
 
for(int i = 0; i < ans.size(); i++)
{
ans[i] = SortedScores[i].second;
}
 
return ans;
 
}
};

SRM#621Div2

21:11

Easy

 概要

  単語の列が与えられる.

  その単語の列が文字の数を基準にソートされているのか,辞書順にソートされているのかを答える.

 解法的な

  与えられた列をコピーして,ソート.このソート済みの列と比較して辞書順かどうかチェック

  列の初めから文字数をチェックしていく

 コード

class TwoWaysSorting {
   public:
   string sortingMethod(vector <string> stringList)
  {

    bool LexFlg = true;
    bool LenFlg = true;

    vector <string> SortedLexStList(stringList.size());
    for(int i = 0; i < stringList.size(); i++)
      {
	SortedLexStList[i] = stringList[i];
      }

    sort( SortedLexStList.begin() , SortedLexStList.end() );

    for(int i = 0; i < stringList.size(); i++)
      {
	if(stringList[i] != SortedLexStList[i])
	  {
	    LexFlg = false;
	  }
      }

    for(int i = 1; i < stringList.size(); i++)
      {
	if(stringList[i-1].size() > stringList[i].size())
	  {
	    LenFlg = false;
	  }
      }

    if(LexFlg && LenFlg) 
      {
	return "both";
      }
    else if(LexFlg)
      {
	return "lexicographically";
      }
    else if(LenFlg)
      {
	return "lengths";
      }
    else
      {
	return "none";
      }

  }
 };
 |