Submission #121074

#TimeUsernameProblemLanguageResultExecution timeMemory
121074BTheroLottery (CEOI18_lot)C++17
100 / 100
759 ms8256 KiB
// Why am I so dumb? :c // chrono::system_clock::now().time_since_epoch().count() //#pragma GCC optimize("Ofast") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define fi first #define se second using namespace std; using namespace __gnu_pbds; typedef long long ll; template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; const int MAXN = (int)1e4 + 5; int diff[MAXN], arr[MAXN]; int ans[105][MAXN]; int cid[MAXN]; int req[105]; int n, l, q; void compress() { vector<int> V; for (int i = 1; i <= q; ++i) { V.pb(req[i]); } sort(all(V)); V.resize(unique(all(V)) - V.begin()); for (int i = 0; i <= n; ++i) { cid[i] = lower_bound(all(V), i) - V.begin(); } for (int i = 1; i <= q; ++i) { req[i] = cid[req[i]]; } } void solve() { scanf("%d %d", &n, &l); for (int i = 1; i <= n; ++i) { scanf("%d", &arr[i]); } scanf("%d", &q); for (int i = 1; i <= q; ++i) { scanf("%d", &req[i]); } compress(); for (int d = 1; d <= n; ++d) { for (int i = 1; i <= n; ++i) { diff[i] = 0; } for (int i = 1; i + d <= n; ++i) { if (arr[i] != arr[i + d]) { ++diff[i]; if (i > l) { --diff[i - l]; } } } for (int i = n - 1; i > 0; --i) { diff[i] += diff[i + 1]; } for (int i = 1; i + d <= n - l + 1; ++i) { ++ans[cid[diff[i]]][i]; ++ans[cid[diff[i]]][i + d]; } } for (int i = 1; i < q; ++i) { for (int j = 1; j <= n - l + 1; ++j) { ans[i][j] += ans[i - 1][j]; } } for (int i = 1; i <= q; ++i) { for (int j = 1; j <= n - l + 1; ++j) { printf("%d ", ans[req[i]][j]); } printf("\n"); } } int main() { int tt = 1; while (tt--) { solve(); } return 0; }

Compilation message (stderr)

lot.cpp: In function 'void solve()':
lot.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &n, &l);
     ~~~~~^~~~~~~~~~~~~~~~~
lot.cpp:60:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &arr[i]);
         ~~~~~^~~~~~~~~~~~~~~
lot.cpp:63:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &q);
     ~~~~~^~~~~~~~~~
lot.cpp:66:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &req[i]);    
         ~~~~~^~~~~~~~~~~~~~~
#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...