Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2413-a517cd3a
この記事にトラックバックする(FC2ブログユーザー)

天下一プログラマーコンテスト2013予選B A - 天下一人力比較 (テスター担当) (この記事を編集する[管理者用])

Source

天下一プログラマーコンテスト2013予選B
問題文

問題概要

問題文中の15個の文字列の中で,辞書順で小さい方から7番目のものを求める問題.
文字列は入力として受け取ることもできる.
文字列はアルファベット大文字のみから成る.

解法

ソートして出力するのが一番楽.
最初の要素を0番目と数えるプログラミング言語では,7番目を出力するのにstr[6]などと指定しないといけないことに注意する.

C++によるスパゲッティなソースコード
#include<cstdio>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<algorithm>
#include<string>
#include<utility>
#include<iostream>
#include<cmath>
#include<cassert>
using namespace std;

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

string read_string(int mx_len, char next){
  int c;
  string res;

  for(;;){
    c = getchar();
    if(c==next) break;
    assert(c != EOF);
    res += c;
    assert( res.size() <= mx_len );
  }

  return res;
}

int main(){
  int i;
  string in[15];
  string test[15] = {"ABGGEGBCFEBFBAF", "FFGFACCCECDGCDGAFFFACGDA", "EEDCAEAFBDDEEDGGA", "GDCAGFFAACBGEDBAFBCDECGAE", "EDB", "GADGADEDBCGABDDCBBDBEAD", "GADBB", "DFCE", "BFGCGCBEDC", "EDGADBGGDDFEEGGFDGCAFBFGFAAD", "DDAEBGACDFDGDAB", "EEDCECFFAE", "ADDBEEABFEAB", "FEEBFDGAADAE", "GB"};

  rep(i,15){
    in[i] = read_string(100, '\n');
    assert(in[i] == test[i]);
  }

  sort(in, in+15);
  puts(in[6].c_str());

  {
    char c;
    assert( scanf("%c",&c)!= 1 );
  }

  return 0;
}

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2413-a517cd3a
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。