Submission #518483

#TimeUsernameProblemLanguageResultExecution timeMemory
518483Yazan_AlattarLottery (CEOI18_lot)C++14
0 / 100
3 ms592 KiB
#include <iostream> #include <fstream> #include <vector> #include <cstring> #include <algorithm> #include <set> #include <map> #include <queue> #include <list> #include <utility> #include <cmath> #include <numeric> #include <assert.h> using namespace std; typedef long long ll; #define F first #define S second #define pb push_back #define endl "\n" #define all(x) x.begin(), x.end() const int M = 307; const ll inf = 1e9; const ll mod = 1e9 + 7; const double pi = acos(-1); const int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}; struct Hash1 { ll SEED = 1e9 + 1;//or 1333 ll MOD = 1000000007;// or 1e9+9 vector<ll> ha; vector<ll> power; void build(vector <int> x) { power.resize(x.size()); ha.resize(x.size()); power[0] = 1; for(int i=1; i<(int)power.size(); i++) power[i] = (power[i-1] * SEED)%MOD; ha[0] = x[0]; for(int i=1; i<(int)ha.size(); i++) ha[i] = (ha[i-1] * SEED + x[i])%MOD; } void Add(vector <int> x) { for(int i = 0; i < x.size(); i++) power.push_back((power.back() * SEED)%MOD); for(int i = 0; i < x.size(); i++) ha.push_back((ha.back() * SEED + x[i])%MOD); } //i,j inclusive ll get(int i, int j) { ll ret = ha[j]; if (i) ret -= ha[i-1] * power[j - i + 1]; ret = (ret % MOD + MOD) % MOD; return ret; } }H; int n, l, q; map <int,int> cnt; int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n >> l; vector <int> a(n); for(int i = 0; i < n; ++i) cin >> a[i]; H.build(a); for(int i = 0; i + l - 1 < n; ++i) ++cnt[H.get(i, i + l - 1)]; cin >> q; while(q--){ int k; cin >> k; for(int i = 0; i < n - l + 1; ++i) cout << cnt[H.get(i, i + l - 1)] - 1 << " "; cout << endl; } return 0; }

Compilation message (stderr)

lot.cpp: In member function 'void Hash1::Add(std::vector<int>)':
lot.cpp:43:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |      for(int i = 0; i < x.size(); i++)   power.push_back((power.back() * SEED)%MOD);
      |                     ~~^~~~~~~~~~
lot.cpp:44:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |         for(int i = 0; i < x.size(); i++)   ha.push_back((ha.back() * SEED + x[i])%MOD);
      |                        ~~^~~~~~~~~~
#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...