Submission #77956

#TimeUsernameProblemLanguageResultExecution timeMemory
77956SaboonLottery (CEOI18_lot)C++14
100 / 100
680 ms15952 KiB
#include <iostream> #include <queue> #include <stack> #include <cstdlib> #include <vector> #include <cstring> #include <cmath> #include <cassert> #include <unordered_set> #include <map> #include <deque> #include <unordered_map> #include <fstream> #include <set> #include <algorithm> #include <iomanip> #define fin cin #define fout cout #define F first #define S second #define PB push_back #define PF push_front #define MP make_pair using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> pll; typedef pair<int,int> pii; typedef unsigned long long ull; const int maxn = 10000 + 10; int a[maxn], nex[maxn], dp[maxn][110]; pii q[maxn]; vector <int> v[maxn]; int n, l; int similar (int fi, int se) { int ret = 0; for (int x = 0; x < l; x++) ret += (a[fi + x] != a[se + x]); return ret; } int main () { ios_base::sync_with_stdio(false); cin >> n >> l; for (int i = 0; i < n; i++) cin >> a[i]; int Q; cin >> Q; for (int i = 0; i < Q; i++) { cin >> q[i].F; q[i].S = i; } sort (q, q + Q); for (int i = l; i >= 0; i--) { nex[i] = lower_bound (q, q + Q, MP (i, 0)) - q; } for (int dis = 1; dis < n - l + 1; dis++) { int cnt = similar (0, dis); dp[0][nex[cnt]] ++; dp[dis][nex[cnt]] ++; for (int i = 0; i < n - l - dis; i++) { cnt -= (a[i] != a[(i + dis) % n]); cnt += (a[i + l] != a[i + dis + l]); dp[i + 1][nex[cnt]] ++; dp[i + dis + 1][nex[cnt]] ++; } } for (int i = 0; i < n; i++) { for (int j = 0; j < Q - 1; j++) { dp[i][j + 1] += dp[i][j]; } } for (int i = 0; i < Q; i++) { for (int j = 0; j < n - l + 1; j++) { v[q[i].S].PB (dp[j][i]); } } for (int j = 0; j < Q; j++) { for (auto w : v[j]) cout << w << " "; cout << 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...