結果

問題 No.1544 [Cherry 2nd Tune C] Synchroscope
ユーザー tsuishi
提出日時 2022-03-07 14:44:09
言語 C
(gcc 13.3.0)
結果
AC  
実行時間 36 ms / 2,000 ms
コード長 1,989 bytes
コンパイル時間 198 ms
コンパイル使用メモリ 30,464 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-07-22 09:24:34
合計ジャッジ時間 2,064 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 48
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// for debug
#define DEBUGw
// -----------

#define NOP do{}while(0)
#ifdef DEBUG
#include <time.h>
#define TRACE(...) do{printf(__VA_ARGS__);fflush(stdout);}while(0)
#define TRACECR do{putchar_unlocked('\n');fflush(stdout);}while(0)
static clock_t	startclock;
void DEBUGSTART(void){TRACE("--DEBUG MODE --\n");startclock=clock();}
void DEBUGEND(void){startclock=clock()-startclock;TRACE("--finish --\ntime is %.3fms\n",startclock/1000.);}
#else
#define TRACE(...) NOP
#define TRACECR NOP
void DEBUGSTART(void){return;}
void DEBUGEND(void){return;}
#endif
extern int getchar_unlocked(void);
extern int putchar_unlocked(int);
#define PRINCR do{printf("\n");fflush(stdout);}while(0)
#define GETLINE(str) do{char *p;fgets(str,sizeof(str),stdin);p=strchr(str,'\n');if(p)*p='\0';}while(0)
#define REP(a,b) for(int a=0;a<(int)(b);++a)
static char *GETWORD(char* str) {char c;char *cp;cp=&str[0];c=fgetc(stdin);while( c != EOF ){if((c==' ')||( c=='\n')) break;*cp++=c;c=fgetc(stdin);}*cp='\0';return &str[0];}
#define    GETINTS(a,b) {char s[34];int *ap=a;REP(i,b){GETWORD(s);sscanf(s,"%d", ap);ap++;}}
static int GETLINEINT(void) {char s[34];GETLINE(s);return atoi(s);}
static int GETWORDINT(void) {char s[34];GETWORD(s);return atoi(s);}
#define SWAP(type,a,b) do{type _c;_c=a;a=b;b=_c;}while(0)
int main()
{
	int n, m;
	int	 i;
	long ll;
	int a[5001], b[5001];
	int *ap,*bp;
	int wa,wb;

	scanf("%d%d\n", &n, &m);

	for (i = 0; i < n; i++)	{
		a[i] = GETWORDINT();
		TRACE("a[%d] = %d\n",i,a[i]);
	}
	for (i = 0; i < m; i++)	{
		b[i] = GETWORDINT();
		TRACE("b[%d] = %d\n",i,b[i]);
	}
	a[n] = b[m] = 99999;
	ap = &a[0];
	bp = &b[0];
	TRACE("start ");
	for (ll = 0L; ll < n * m; ll++) {
		if( 10000 < (wa = *ap++) ) { wa = a[0]; ap = &a[1]; }
		if( 10000 < (wb = *bp++) ) { wb = b[0]; bp = &b[1]; }
		TRACE("%d-%d ",wa,wb);
		if ( wa == wb ) {
			printf("%ld\n", ll+1);
			return 0;
		}
	}
	TRACE("End ");
	printf("-1\n");
	return 0;
}
0