QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#839966#9725. LotteryjiangzhihuiRE 0ms0kbC++141.5kb2025-01-02 12:47:262025-01-02 12:47:28

Judging History

This is the latest submission verdict.

  • [2025-01-02 12:47:28]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2025-01-02 12:47:26]
  • Submitted

answer

#include<bits/stdc++.h>
#define N 1100000
#define db double
#define ll long long
#define ldb long double
#define ull unsigned long long
using namespace std;
const int h=3,ki=149,mo=1e9+7;
inline int inc(int x,int k){x+=k;return x<mo?x:x-mo;}
inline int dec(int x,int k){x-=k;return x>=0?x:x+mo;}
inline int read()
{
	char ch=0;int x=0,flag=1;
	while(!isdigit(ch)){ch=getchar();if(ch=='-')flag=-1;}
	while(isdigit(ch)){x=(x<<3)+(x<<1)+ch-'0',ch=getchar();}
	return x*flag;
}
inline void write(int x)
{
	if(!x)return (void)putchar(48);
	if(x<0)putchar(45),x=-x;
	int len=0,p[20];
	while(x)p[++len]=x%10,x/=10;
	for(int i=len;i>=1;i--)putchar(p[i]+48);
}
const db eps=1e-7,inf=1e9+7,pi=acos(-1);
inline db Read(){db x;scanf("%lf",&x);return x;}
inline void Write(db x){printf("%lf",x);}
map<int,int>mp;
map<int,int>::iterator it;
int main()
{
	int t=read(); 
	for(int o=1;o<=t;o++)
	{
		int n=read(),ans=1;mp.clear();
		for(int i=1;i<=n;i++){int x=read(),k=read();mp[x]+=k;}
		
		for(it=mp.begin();it!=mp.end();it++)
		{
			int x=it->first,k=it->second;mp[x]=0;
			for(int i=0;(1<<i)<=k;i++)mp[x+i]++,k-=(1<<i);
			for(int i=0;(1<<i)<=k;i++)if((1<<i)&k)mp[x+i]++,k-=(1<<i);
		}
		int f0=1,f1=0;
		for(it=mp.begin();it!=mp.end();it++)
		{
			int x=it->first,k=it->second;
            assert(k<=1);
			if(!mp[x-1])ans=1ll*ans*inc(f0,f1)%mo,f0=1,f1=0;
			f1=(k==1)?f1:inc(f0,f1);f0=inc(f0,f0);
		}
		ans=1ll*ans*inc(f0,f1)%mo;
		printf("Case #%d: %d\n",o,(ans%mo+mo)%mo);
	} 
    return 0;
}

詳細信息

Test #1:

score: 0
Runtime Error

input:

2
3
1 1
2 1
3 1
3
1 1
2 2
3 3

output:


result: