Submission #1182436

#TimeUsernameProblemLanguageResultExecution timeMemory
1182436ByeWorldLottery (CEOI18_lot)C++20
25 / 100
34 ms39752 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3") // #define int long long #define ll long long #define pb push_back #define fi first #define se second #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) #define ld long double using namespace std; typedef pair<int,int> pii; typedef pair<int,pii> ipii; const int MAXN = 4e3+10; const int MAXA = 1e9; const int INF = 2e9+100; const int SQRT = 500; const int LOG = 19; const int MOD = 998244353; void chmn(auto &a, auto b){ a = min(a, b); } void chmx(auto &a, auto b){ a = max(a, b); } int sum(int a, int b){ a %= MOD; b %= MOD; return (a+b)%MOD; } void chsum(int &a, int b){ a %= MOD; b %= MOD; a = (a+b)%MOD; } void chsub(int &a, int b){ a %= MOD; b %= MOD; a = (a+MOD-b)%MOD; } int mul(int a, int b){ a %= MOD; b %= MOD; return a*b%MOD;} void chmul(int &a, int b){ a = a*b%MOD; } int expo(int a, int b){ if(b==0) return 1; int te = expo(a, b/2); te = mul(te, te); return (b%2 ? mul(te, a) : te); } int n, l; int a[MAXN], same[MAXN][MAXN]; int dif[MAXN][MAXN]; signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>l; for(int i=1; i<=n; i++) cin>>a[i]; for(int i=1; i<=n; i++){ // a[i] for(int j=1; j<=n; j++){ if(a[i] != a[j] || i==j) continue; dif[max(1,i-l+1)][n + i-j]++; dif[i+1][n + i-j]--; // yg start di // if(i-j==-3) cout << max(1,i-l+1) << ' '<< i+1 <<" staen\n"; } } for(int j=-n; j<=n; j++){ for(int i=1; i<=n; i++){ // i-(i-n+l-1) --> n-l+1, // distancenya, seg[i] sm seg[i-j] samanya brp dif[i][n + j] += dif[i-1][n + j]; // cout << i << ' ' << j << ' '<< dif[i][n + j] << " dif\n"; } } for(int i=1; i<=n; i++){ for(int j=i-1; j>=i-n+l-1; j--){ if(j==0) continue; same[i][ dif[i][n + j] ]++; // seg[i] yg samanya k ada brp } // for(int j=0; j<=l; j++){ // cout << i << ' ' << j << ' '<< same[i][j]<< " j\n"; // seg[i] yg samanya k ada brp // } for(int j=l; j>=0; j--) same[i][j] += same[i][j+1]; } int q; cin>>q; while(q--){ int x; cin>>x; x = l-x; // samanya x for(int i=1; i<=n-l+1; i++) cout << same[i][x] << ' '; 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...