Submission #94094

#TimeUsernameProblemLanguageResultExecution timeMemory
94094jasony123123Lottery (CEOI18_lot)C++11
100 / 100
1771 ms8256 KiB
#define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> #include <array> #include <unordered_map> //#include <ext/pb_ds/tree_policy.hpp> //#include <ext/pb_ds/assoc_container.hpp> using namespace std; //using namespace __gnu_pbds; #define FOR(i,start,end) for(int i=start;i<(int)(end);i++) #define FORE(i,start,end) for(int i=start;i<=(int)end;i++) #define RFOR(i,start,end) for(int i = start; i>end; i--) #define RFORE(i,start,end) for(int i = start; i>=end; i--) #define all(a) a.begin(), a.end() #define mt make_tuple #define mp make_pair #define v vector #define sf scanf #define pf printf #define dvar(x) cout << #x << " := " << x << "\n" #define darr(x,n) FOR(i,0,n) cout << #x << "[" << i << "]" << " := " << x[i] << "\n" typedef long long ll; typedef long double ld; typedef pair<int, int > pii; typedef pair<ll, ll> pll; //template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; template<class T> void minn(T &a, T b) { a = min(a, b); } template<class T> void maxx(T &a, T b) { a = max(a, b); } void io() { #ifdef LOCAL_PROJECT freopen("input.in", "r", stdin); freopen("output.out", "w", stdout); #else /* online submission */ #endif ios_base::sync_with_stdio(false); cin.tie(NULL); } /*************************CEOI 2018 Day 1 P3 - LOT*************************/ int N, Q, L, A[10000]; v<int> quorg, qumod; int ans[10000][101]; void add(int i, int k) { int qi = lower_bound(all(qumod), k) - qumod.begin(); ans[i][qi]++; // cout << "add " << i << " k=" << k << "\n"; } int main() { io(); cin >> N >> L; FOR(i, 0, N) cin >> A[i]; cin >> Q; FOR(i, 0, Q) { int k; cin >> k; quorg.push_back(k), qumod.push_back(k); } sort(all(qumod)); qumod.push_back(INT_MAX); for (int t = 0, b = 1; b <= N - L; b++) { for (int i = t, j = b, c = 0; i <= N - L && j <= N - L; i++, j++) { if (i == 0) FORE(l, 0, L - 1) c += (A[i + l] != A[j + l]); else c -= (A[i - 1] != A[j - 1]), c += (A[i + L - 1] != A[j + L - 1]); // cout << i << " " << j << " c=" << c << "\n"; add(i, c), add(j, c); } } FORE(i, 0, N-L) FOR(j, 1, qumod.size()) ans[i][j] += ans[i][j - 1]; for (auto k : quorg) { int qi = lower_bound(all(qumod), k) - qumod.begin(); FORE(i, 0, N-L) cout << ans[i][qi] << " "; cout << "\n"; } }
#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...