比赛 |
NOIP2017普及组模拟赛Mike |
评测结果 |
AAAAAAAAAA |
题目名称 |
嘉豪 |
最终得分 |
100 |
用户昵称 |
_IOSTREAM_ |
运行时间 |
0.218 s |
代码语言 |
C++ |
内存使用 |
9.87 MiB |
提交时间 |
2017-09-30 12:26:37 |
显示代码纯文本
#include<cstdio>
using namespace std;
#ifdef negative
#define getc() ((HEAD==TAIL&&((buff[0]=buff[65536]),(buff[1]=buff[65537]),(TAIL=(HEAD=REHEAD)+fread(REHEAD,1,65536,stdin)),HEAD==TAIL))?0:*HEAD++)
char buff[65538],*REHEAD=buff+2,*HEAD=REHEAD,*TAIL=REHEAD;
#else
#define getc() ((HEAD==TAIL&&((TAIL=(HEAD=buff)+fread(buff,1,65536,stdin)),HEAD==TAIL))?0:*HEAD++)
char buff[65536],*HEAD=buff,*TAIL=buff;
#endif
#define putc(x) (OHEAD==OTAIL?OHEAD=obuf,fwrite(obuf,1,655360,stdout),*OHEAD++=x:*OHEAD++=x)
#define oend() fwrite(obuf,1,OHEAD-obuf,stdout)
char obuf[655360],*OHEAD=obuf,*OTAIL=obuf+655360;
int osta[16];
template<class T>
inline
#ifdef READ_BOOL
bool read(T &ret){
#else
void read(T &ret){
#endif
register char CH;
#ifdef negative
register bool flag=false;
#endif
#ifdef READ_BOOL
for(;CH=getc(),CH<48;)if(!CH)return false;
#else
for(;CH=getc(),CH<48;);
#endif
#ifdef negative
if(*(HEAD-2)=='-')flag=true;
#endif
for(ret=CH^48;CH=getc(),CH>47;)ret=(ret<<3)+(ret<<1)+(CH^48);
#ifdef negative
if(flag)ret=-ret;
#endif
#ifdef READ_BOOL
return true;
#endif
}
template<class T>
inline void write(register T x){
if(x==0)putc('0');
else{
register int o=0;
for(;x;x/=10)osta[o++]=x%10;
for(;o;)putc(osta[--o]+48);
}
putc(' ');
}
unsigned long long int n;
int cnt[131072],x[1100000],y[1100000],m;
int main(){
freopen("jiahao1.in","rb",stdin);
freopen("jiahao1.out","w",stdout);
read(n);
n<<=1;
read(m);
for(int i=0;i<m;i++)
read(x[i]),x[i]<<=1;
register int i;
for(i=0;i<m;i++)cnt[x[i]&131071]++;
for(i=1;i<=131071;i++)cnt[i]+=cnt[i-1];
for(i=m-1;i>=0;i--)y[--cnt[x[i]&131071]]=x[i];
for(i=0;i<=131071;i++)cnt[i]=0;
for(i=0;i<m;i++)cnt[y[i]>>16&131071]++;
for(i=1;i<=131071;i++)cnt[i]+=cnt[i-1];
for(i=m-1;i>=0;i--)x[--cnt[y[i]>>16&131071]]=y[i];
for(i=0;i<m;i++)
if(x[i]<n)n+=(x[i]>>1);
else{
printf("%d",i);
return 0;
}
printf("%d",i);
return 0;
}