Submission #287564

#TimeUsernameProblemLanguageResultExecution timeMemory
287564TadijaSebezFibonacci representations (CEOI18_fib)C++11
25 / 100
1 ms384 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int mod=1e9+7; int add(int x,int y){x+=y;return x>=mod?x-mod:x;} int mul(int x,int y){return (ll)x*y%mod;} const int N=150; int cnt[N]; void Fix(){ while(1){ bool ok=0; if(cnt[1]==2)cnt[1]=0,cnt[2]++,ok=1; for(int i=2;i<N;i++){ assert(cnt[i]<3); if(cnt[i]&&cnt[i-1]){ cnt[i-1]--; cnt[i]--; cnt[i+1]++; ok=1; } if(cnt[i]==2){ cnt[i]-=2; cnt[max(1,i-2)]++; cnt[i+1]++; ok=1; } } if(!ok)break; } for(int i=1;i<N;i++)assert(cnt[i]<2&&(!cnt[i]||!cnt[i-1])); } int Solve(){ int dp[2]={1,0},las=0; for(int i=1;i<N;i++)if(cnt[i]){ int d0=add(dp[0],dp[1]); int sz=i-las-1; int d1=add(mul(dp[0],sz/2),mul(dp[1],(sz+1)/2)); las=i;dp[0]=d0;dp[1]=d1; } return add(dp[0],dp[1]); } int main(){ int n; scanf("%i",&n); for(int i=1;i<=n;i++){ int a; scanf("%i",&a); cnt[a]++; Fix(); printf("%i\n",Solve()); } return 0; }

Compilation message (stderr)

fib.cpp: In function 'int main()':
fib.cpp:44:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   44 |  scanf("%i",&n);
      |  ~~~~~^~~~~~~~~
fib.cpp:47:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   47 |   scanf("%i",&a);
      |   ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...