Submission #1121816

#TimeUsernameProblemLanguageResultExecution timeMemory
1121816vjudge1Calvinball championship (CEOI15_teams)C++17
10 / 100
2 ms592 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ld double


const int INF = 1e18;
const int mod = 1e9 + 7;
const int sz = 5e5 + 5;

int mod_exp(int a , int b , int c)
{
   int res = 1;
   a = a % c;
   while(b > 0){
      if(b & 1) res = (res * a) % c;
      b /= 2;
      a = (a * a) % c;
   }
   return res;
}

signed main()
{
   ios_base::sync_with_stdio(0);cin.tie(0);
   int n;
   cin >> n;
   if(n <= 14)
   {
   vector < int > a(n + 1);
   int sum = 0;
   for(int i = n;i >= 1;i--)
   {
      cin >> a[i];
      sum += (i * a[i]) % mod;
   }
   cout << (sum - ((n * (n + 1)) / 2) + 1) % mod << endl;
   return 0;
   }
   vector < int > a(n + 1);
   for(int i = n;i >= 1;i--)
   {
      cin >> a[i];
   }
   vector < int > dp(n + 1);
   dp[1] = 1;
   dp[2] = 3;
   for(int i = 3;i <= n;i++)
   {
      dp[i] = (mod_exp(2 , i , mod) - dp[i - 1]) % mod;
   }
   cout << dp[n] << endl;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...