借り手のUVA - 230

#include <ビット/ STDC ++ H>
名前空間STDを使用して、
typedefの長い長いLL。
const int型+ 5 MAXN = 1000;

構造体帳
{
文字列名、著者;
ブール演算子<(constの書籍&B)
{
場合(作者= b.author!)戻り作者<b.author。
他のリターン名<b.name。
}
}書籍[MAXN]。


マップの<string、int型>状態。
棚オフ棚2上// 0ボロー1

INT find_pre(INT CUR)
{
(INT I = CUR-1; I> = 0; i--)は
{
IF(状態[書籍[I] .nameの] == 1)リターンI。
}
-1を返します。
}
int型のmain()
{
//freopen("datain.txt","r",stdin)。
// IOS :: sync_with_stdio(偽);
文字列BUF。
state.clear();
INT、N = 0。
一方(のgetline(CIN、BUF))
{
IF(BUF [0] == 'E')ブレーク。
int型POS = buf.find( '"'、1);
文字列名= buf.substr(0、POS + 1); // coutの<<名<< ENDL;
文字列の作者= buf.substr(POS + 5); // COUT <<著者<< ENDL、
書籍[N] .author =著者、書籍[N] .nameの=名前、
状態[書籍[N] .nameの] = 1;
N ++;
}
ソート(書籍、書籍+ N );
一方(のgetline(CIN、BUF))
{
IF(BUF [0] == 'E')ブレーク。
IF(BUF [0] == 'B')
{
BUF = buf.substr(7)。// coutの<< BUF <<てendl;
状態【BUF] = 0;
}
IF(BUF [0] == 'R')
{
BUF = buf.substr(7); // COUT << BUF << ENDL。
状態【BUF = 2。
}
IF(BUF [0] == 'S')
{
ため(INT i = 0; iがn <; iは++)
{
IF(状態[書籍[I] .nameの] == 2)// COUT << 1。
{
int型のPOS = find_pre(I)。
もし(POS == - 1)COUT << "入れて"<<ブック[I] .nameの<<"最初の\ nを";
他の裁判所未満<< "入れて"<<ブック[I] .nameの<<"の後に" <<ブック[POS] .nameの<<てendl;
状態[書籍[I] .nameの] = 1。
}
}
プット( "END")。
}
}
}

おすすめ

転載: www.cnblogs.com/hanker99/p/11204843.html