Monthly Archives: April 2016

Google CodeJam – Problem B. Rank and File

https://code.google.com/codejam/contest/4304486/dashboard#s=p1&a=2

the idea is very simple, every items on the matrix will appear even time, therefore, for the row which is missing, all items should have odd times.

the code is following

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc,char **argv) 
{ 
  int N;
  int array[3000];
  scanf("%d\n",&N);
 
  for(int i=0;i<N;i++)
  {
	  int T;
	  scanf("%d\n",&T);
	  memset(array,0,sizeof(int)*3000);
 
	  int temp;
	  for(int m=0;m<2*T-1;m++)
	  {
		  for(int n=0;n<T;n++)
		  {
			scanf("%d",&temp);
			array[temp]++;
		  }
	  }
 
	  printf("Case #%d: ",(i+1));
 
	  for(int m=0;m<3000;m++)
	  {
		  if(array[m]>0 && array[m]%2==1)
		  {
			  printf("%d ",m);
		  }
	  }
	  printf("\n");
  }
 
  return 0; 
}

Google CodeJam – Problem A. The Last Word

https://code.google.com/codejam/contest/4304486/dashboard#s=p0&a=2

This problem is very simple, use basic linked operation will be enough,

it only compare the head item and tail item.

if new item > head item, then new item will be inserted into head.

if new item <= head item, then it will be inserted int tail. check following code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
 
struct element
{
	char c;
	struct element *next;
};
 
int main(int argc,char **argv) 
{ 
	int N;
	char c;
	scanf("%d\n",&N);
 
	char array[2000];
 
	for(int i=0;i<N;i++)
	{
		memset(array,0,sizeof(char)*2000);
 
		scanf("%s\n",array);
 
 
		struct element *tail;
		struct element *head = (struct element *)malloc(sizeof(struct element));
		memset(head,0,sizeof(struct element));
		head->c = array[0];
		head->next = NULL;
		tail = head;
 
		for(int j=1;array[j]!='\0';j++)
		{
			if(array[j]>=head->c)
			{
				struct element *e = (struct element *)malloc(sizeof(struct element));
				e->c = array[j];
				e->next = head;
				head = e;
			}
			else
			{
				struct element *e = (struct element *)malloc(sizeof(struct element));
				e->c = array[j];
				e->next = NULL;
				tail->next = e;
				tail = e;
			}
		}
		printf("Case #%d: ",i+1);
		struct element *p = head;
		for(;;)
		{
			if(p!=NULL){
				printf("%c",p->c);
				p=p->next;
			}
			else
				break;
		}
		printf("\n");
 
	}
 
	return 0; 
}

Sqlite DateTime compare in WebSQL

Sqlite has DateTime. However, in my test ‘DateTime’ is similar with ‘Text’.

for example, javascript moment.js,

1
2
3
4
5
6
 
var date = new moment().format('YYYY-MM-DD hh:mm');
saveToDatebase(date);
 
var date = new moment().format('YYYY-MM-DD h:mm a');
saveToDatebase(date);

in sqlite, two different format will saved as different string.

it is better not to compare two different format, such as ‘2016-10-10’ and ‘2016-10-10 10:10:10’. it is comparable, but it is meanless.

therefore, in my test, and date time should be save as YYYY-MM-DD hh:mm, such as ‘2016-10-10 10:10’ format.

then, sql statement like ‘select * from test where startDate < '2016-10-10 15:15' will work perfectly well.