请帮我优化我的程序,我的耗时太大了
题目描述:
输入N个学生的信息,然后进行查询。
输入:
输入的第一行为N,即学生的个数(N<=1000)
接下来的N行包括N个学生的信息,信息格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04
输出:
输出M行,每行包括一个对应于查询的学生的信息。
如果没有对应的学生信息,则输出“No Answer!”
我的程序是:
#include "iostream"
#include "string"
#include<algorithm>
using namespace std;
int main(){
int num[1000],age[1000];
string name[1000],sex[1000];
int i,n,m,a;
int flag,mid;
while(cin>>n){
for(i=0;i<n;i++)
cin>>num[i]>>name[i]>>sex[i]>>age[i];
cin>>m;
for(i=0;i<m;i++){
cin>>a;
for(mid=n/2,flag=0;mid<=n;){
if(num[mid]==a){
cout<<"0"<<num[mid]<<" "<<name[mid]<<" "<<sex[mid]<<" "<<age[mid]<<endl;
flag=1;
break;
}
else if(num[mid]>a)
mid=mid/2;
else
mid=(mid+n)/2;
}
if(flag!=1)
cout<<"No Answer!"<<endl;
}
}
return 1;
}