Where is the Marble?
题目链接:Where is the Marble?
题目概述:读入一行2个数字 N 和 Q, N 表示接下来的 N 行数字为 marbles, Q 表示 N 行数字之后的 Q 行数字为 query. 要求把 N 行 marbles 从小到大排序, 然后输出每个 Q 在 marbles 中的位置.
Input:
4 1
2
3
5
1
5
5 2
1
3
3
3
1
2
3
0 0
Output:
CASE# 1:
5 found at 4
CASE# 2:
2 not found
3 found at 3
解题思路:把读入的 marbles 都存放在 vector 里, 然后排序, 再利用 find 查找进行输出即可.
最终代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n=0,q=0;
int number=0;
int i=0,j=0;
int ics=1;
vector<int> marble;
while(cin>>n>>q && (n!=0 && q!=0)){
for(i=0;i<n;i++){
cin>>number;
marble.push_back(number);
}
sort(marble.begin(),marble.end());
cout <<"CASE# "<<ics++ <<":"<<endl;
for(j=0;j<q;j++){
cin>>number;
vector<int>::iterator iter = find(marble.begin(),marble.end(),number);
if(iter == marble.end())
cout << number << " not found"<<endl;
else
cout << number << " found at "<<distance(marble.begin(), iter)+1<<endl;
}
marble.clear();
}
return 0;
}