結果
| 問題 |
No.182 新規性の虜
|
| コンテスト | |
| ユーザー |
tsuishi
|
| 提出日時 | 2021-04-22 15:54:52 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,029 bytes |
| コンパイル時間 | 231 ms |
| コンパイル使用メモリ | 30,848 KB |
| 実行使用メモリ | 16,156 KB |
| 最終ジャッジ日時 | 2024-07-04 06:23:31 |
| 合計ジャッジ時間 | 7,252 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 WA * 5 TLE * 1 -- * 5 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ***********************
extern int getchar_unlocked(void);
extern int putchar_unlocked(int);
#define DEBUGd
// ---------------------------
#define NOP do{}while(0)
#define gc(d) (d)=getchar_unlocked()
#define pc(d) putchar_unlocked(d)
#define mygc(c) (c)=getchar()
#define PRINCR pc('\n')
#ifdef DEBUG
#include <time.h>
#define TRACE(...) do{fprintf(stderr,__VA_ARGS__);}while(0)
#define TRACECR do{fprintf(stderr,"\n");}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
// ---------------------------
#define lolong long long
static char *GETWORD(char* str) {char c;char *cp;cp=&str[0];gc(c);while(c!=EOF){if((c==' ')||(c=='\n'))break;*cp++=c;gc(c);}*cp='\0';return &str[0];}
#define str_len(a) mystr_len_lim(a,9999)
static int mystr_len_lim(char *str,int lim){int i=0;do{if(str[i]=='\0')break;i++;}while(i<lim);return i;}
#define GETLINE(str) do{char *p;fgets(str,sizeof(str),stdin);p=strchr(str,'\n');if(p)*p='\0';}while(0)
static int GETLINEINT(void) {char s[34];GETLINE(s);return atoi(s);}
static int GETWORDINT(void) {char s[34];GETWORD(s);return atoi(s);}
static long GETWORDLONG(void) {char s[34];GETWORD(s);return atol(s);}
static long GETLINELONG(void) {char s[34];GETLINE(s);return atol(s);}
static int max(int a,int b){if(a>b){return a;}return b;}
static lolong GETLINELL(void) {char s[44];GETLINE(s);return atoll(s);}
static int min(int a,int b){if(a<b){return a;}return b;}
#define REP(a,b) for(int a=0;a<(b);++a)
#define REP1(a,b) for(int a=1;a<=(b);++a)
const lolong MOD = 1e9 + 7;
void outl(long n) { // 整数の表示(出力)
int i;
char b[43];
if (!n) pc('0');
else {
if (n < 0) pc('-'), n = -n;
i = 0; while (n>0) { b[i++] = n % 10 + '0'; n = n / 10; }
while (i--) pc(b[i]);
}
pc('\n');
}
// *********************
#define MAPSIZE (99999*8)
char m[MAPSIZE];
long mx[MAPSIZE];
long midx = 0;
int N;
// *********************
long getmap(long num )
{
long ti;
ti = num % 1000;
ti = ( (num>>10) +1) / 7 + ti;
midx = ti % MAPSIZE;
if( mx[midx] != num ) {
while( mx[midx] != 0 ) midx = (++midx) % MAPSIZE;
}
if( mx[midx] = 0 ) return 0;
return m[midx];
}
void putmap(long num, int c )
{
//getmap(num); // 位置が確定していなければ呼び出す
m[midx] = c;
mx[midx] = num;
}
// *********************
int main( void ) {
long ans = 0;
memset( mx , 0 , MAPSIZE*sizeof(long) );
N = GETLINEINT();
DEBUGSTART();
REP(i,N) {
long cn;
long v = GETWORDLONG();
cn = getmap( v );
TRACE("[%ld](%d)",v,cn);
if(cn==1) {
putmap(v,2);
ans--;
} else if(cn==0) {
putmap(v,1);
ans++;
}
TRACE("ans %d\n",ans);
}
DEBUGEND();
outl( ans );
}
tsuishi