本题是,我写的答案怎么都过不了第二个样例,于是找了一个,存下来
#include <iostream>
#include <string.h>
using namespace std;
int Bigger(char a[20], char b[20])
{
int i=0;
for(i=0;i<10;i++)
{
if(a[i]-b[i]>0)
return 1;
if(a[i]-b[i]<0)
return 0;
}
return 0;
}
int main()
{
int n,i,count=0;
char name[10],old[10],young[10];
char birth[20],max[20]="1814/09/05",min[20]="2014/09/07";
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%s %s",name,birth);
if((Bigger(birth,"1814/09/05"))&&(Bigger("2014/09/07",birth)))
{
count++;
if(Bigger(birth,max))
{
strcpy(max,birth);
strcpy(old,name);
}
if(Bigger(min,birth))
{
strcpy(min,birth);
strcpy(young,name);
}
}
}
if(count>0)
printf("%d %s %s\n",count,young,old);
else
printf("0");
system("pause");
return 0;
}
把自己的存下来
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
char name[10];
int year,month,day;
friend bool operator <(node a,node b)
{
if(a.year!=b.year)
return a.year<b.year;
else if(a.month!=b.month)
return a.month<b.month;
else
return a.day<b.day;
}
};
int main()
{
int n;
char date[20];
vector<node> v;
//freopen("1028.txt","r",stdin);
scanf("%d",&n);
node s1,s2,s;
strcpy(s1.name,"x"),s1.year=1814,s1.month=9,s1.day=6;
strcpy(s2.name,"y"),s2.year=2014,s2.month=9,s2.day=6;
v.push_back(s1),v.push_back(s2);
for(int i=0;i<n;i++)
{
scanf("%s %s",s.name,date);
s.year=(date[0]-'0')*1000+(date[1]-'0')*100+(date[2]-'0')*10+(date[3]-'0');
s.month=(date[5]-'0')*10+(date[6]-'0');
s.day=(date[8]-'0')*10+(date[9]-'0');
v.push_back(s);
}
sort(v.begin(),v.end());
int left,right,flag=0;
for(int i=0;i<n+2;i++)
{
if(!strcmp(v[i].name,"x")&&(!flag))
{
left=i;
flag=1;
}
if((flag)&&!strcmp(v[i].name,"y"))
{
right=i;
}
}
if((right-left-1)!=0)
printf("%d %s %s",right-left-1,v[left+1].name,v[right-1].name);
else
printf("0");
return 0;
}