Problem statement: Arun and his sister Usha are challenging each other with mathematical puzzles .Usha,the cleverer one ,has come up with the idea of giving Arun 12 digits ranging from 0 to 9, and have him the latest date time in 2018 with them.Arun is a little nervous and asks you to help him with a computer program.
Usha will give Arun 12 digits . He needs to create date-time in the MM/DD format (all four digits must be present), and the time in format HH:MM ((all four digits must be present).The date may be from 01//01 to 12/31 and time maybe from 00:00 to 23:59 (in the 24 hour format).The digits provided may be used only once in the answer that Arun gives. If more than one date-time combinations are possible , Arun needs to give the latest date-time possible in the year 2018.
Input
A line consisting of 12 (not necessarily distinct) single digits(0-9) separated by spaces.The sequence will be non-decreasing.
Output
Print the latest possible date-time in the year 2018.The output must be in the format MM/DD HH:MM. My code is :
#include<stdio.h>
int max(int n1,int n2)
{ if (n1>=n2)
return n1;
else
return n2;
}
int main()
{ int numbers[12];
for (int i=0 ; i<12 ; ++i)
{scanf("%d ",&numbers[i]);}
int month_1=-1,month_2=-1,day_1=-1,hour_1=-1,hour_2=-1,min_1=-1,min_2=-1;
int day_2=-1;
for (int i=0 ; i<12 ; ++i)
{
if(numbers[i]==1)
{
month_1=1;
numbers[i] =20;
}
else if(numbers[i]==0){
month_1=0;
numbers[i] =20;
}
}
if (month_1==0)
{ for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]>0 && numbers[i]<10)
{
month_2 = max(month_2,numbers[i]);
}
}
}
for (int i=0 ; i<12 ; ++i)
{
if (month_2==numbers[i])
{
numbers[i] =20;
break;
}
}
if (month_1 == 1)
{
for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]>=0 && numbers[i]<3)
{
month_2 = max(month_2,numbers[i]);
}
}
}
for (int i=0 ; i<12 ; ++i)
{
if (month_2==numbers[i])
{
numbers[i] =20;
break;
}
}
for (int i=0 ; i<12 ; ++i)
{
if (numbers[i]>=0 && numbers[i]<4)
{
day_1 =max(day_1,numbers[i]);
}
}
for (int i=0 ; i<12 ; ++i)
{
if (day_1==numbers[i])
{
numbers[i] =20;
break;
}
}
if (day_1==0)
{ for (int i=0 ; i<12 ; ++i)
{
if (numbers[i]>0 && numbers[i]<10)
{
day_2 = max(day_2,numbers[i]);
}
}
}
else if (day_1>0 && day_1 <=2)
{ for (int i=0 ; i<12 ; ++i)
{
if (numbers[i]>=0 && numbers[i]<10)
{
day_2 = max(day_2,numbers[i]);
}
}
}
else if (day_1==3)
{ for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]==0 || numbers[i]==1)
{
day_2 = max(day_2,numbers[i]);
}
}
}
for (int i=0 ; i<12 ; ++i)
{
if (day_2==numbers[i])
{
numbers[i] =20;
break;
}
}
for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]>=0 && numbers[i]<3)
{
hour_1 = max(hour_1,numbers[i]);
}
}
for (int i=0 ; i<12 ; ++i)
{
if (hour_1==numbers[i])
{
numbers[i] =20;
break;
}
}
for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]>=0 && numbers[i]<4)
{
hour_2 = max(hour_2,numbers[i]);
}
}
for (int i=0 ; i<12 ; ++i)
{
if (hour_2==numbers[i])
{
numbers[i] =20;
break;
}
}
for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]>=0 && numbers[i]<6)
{
min_1 = max(min_1,numbers[i]);
}
}
for (int i=0 ; i<12 ; ++i)
{
if (min_1==numbers[i])
{
numbers[i] =20;
break;
}
}
for (int i=0 ; i<12 ; ++i)
{ if (numbers[i]>=0 && numbers[i]<10)
{
min_2 = max(min_2,numbers[i]);
}
}
printf("%d%d/%d%d %d%d:%d%d",month_1,month_2,day_1,day_2,hour_1,hour_2,min_1,min_2);
return 0;
}
Input
0 0 1 2 2 2 3 5 9 9 9 9
Expected Output
12/30 22:59
I am not getting expected output.
My current output is
12/3-1 22:59
Can anyone please tell me what's wrong with my code or what changes do I need to make so that I get the required output.
Aucun commentaire:
Enregistrer un commentaire