传送门:HDU 2600 War
注意:不能开int数组做hash,爆内存。要用bool 或是 char类型。
代码如下;
#include <stdio.h>
#include <string.h>
bool hash[12000005]; // 开 int 内存超限 bool 和 char 都只占1个字节 int 开 12000000的数组大小会到48MB
int main() {
int cas,st,ed,i,j,s,t,flag;
char warN[101];
while(scanf("%d",&cas) != EOF) {
scanf("%d%d",&st,&ed);
st += 6000000;
ed += 6000000;
memset(hash, false, sizeof(hash));
for(i=0; i<cas; i++) {
scanf("%d%d%[^\n]",&s,&t,warN);
s += 6000000;
t += 6000000;
for(j=s; j<=t; j++)
hash[j] = true;
}
flag = 0;
for(i=ed; i>=st; i--) {
if(!hash[i]) {
printf("%d\n",i-6000000);
flag = 1;
break;
}
}
if(flag == 0)
printf("Badly!\n");
}
return 0;
}