제출 #232252

#제출 시각아이디문제언어결과실행 시간메모리
232252nicolaalexandraLottery (CEOI18_lot)C++14
0 / 100
535 ms4456 KiB
#include <bits/stdc++.h> #define DIM 10010 #define DIMQ 102 using namespace std; int v[DIM],dp[DIM][DIMQ],sol[DIMQ][DIM],f[DIM]; pair <int,int> qry[DIMQ]; int n,l,i,j,len,q; void add_query (int poz, int val){ int st = 1, dr = q, sol = q+1; while (st <= dr){ int mid = (st+dr)>>1; if (qry[mid].first >= val){ sol = mid; dr = mid-1; } else st = mid+1; } dp[poz][sol]++; } int main (){ //ifstream cin ("date.in"); //ofstream cout ("date.out"); cin>>n>>l; for (i=1;i<=n;i++) cin>>v[i]; cin>>q; for (i=1;i<=q;i++){ cin>>qry[i].first; qry[i].second = i; } sort (qry+1,qry+q+1); for (len=1;len<=n-l;len++){ int sum = 0; for (i=1;i<=l;i++){ if (v[i] != v[i+len]) f[i] = 1, sum++; else f[i] = 0; } add_query (1,sum); add_query (1+len,sum); for (i=2;i+len+l-1<=n;i++){ if (v[i+l-1] != v[i+len + l-1]) f[i] = 1, sum++; else f[i] = 0; if (f[i-1]) /// ala pe care il scot sum--; add_query (i,sum); add_query (i+len,sum); } } for (j=1;j<=n-l+1;j++){ for (i=1;i<=q;i++){ dp[j][i] += dp[j][i-1]; sol[qry[i].second][j] = dp[j][i]; } } for (i=1;i<=q;i++){ for (j=1;j<=n-l+1;j++) cout<<sol[i][j]<<" "; cout<<"\n"; } return 0; }
#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...