Submission #1180209

#TimeUsernameProblemLanguageResultExecution timeMemory
1180209PieArmyLottery (CEOI18_lot)C++20
100 / 100
345 ms9172 KiB
#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
using namespace std;

int n,l,q;
int arr[10023];
int Q[123],per[123];
int ans[10023][123];
int go[10023];
int dif[10023];

int main(){
	ios_base::sync_with_stdio(false);cin.tie(NULL);
	cin>>n>>l;
	for(int i=1;i<=n;i++){
		cin>>arr[i];
	}
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>Q[i];
	}
	Q[q+1]=l+1;
	iota(per,per+q+1,1);
	sort(per,per+q+1,[&](const int &x,const int &y){
		return Q[x]<Q[y];
	});
	int loc=0;
	for(int i=0;i<=q;i++){
		while(loc<=Q[per[i]]){
			go[loc]=i;
			loc++;
		}
	}
	for(int i=1;i<=n-l;i++){
		for(int j=1;j+i<=n;j++){
			dif[j]=dif[j-1]+(arr[j]!=arr[j+i]);
		}
		for(int j=l;j<=n;j++){
			if(j+i<=n)ans[j][go[dif[j]-dif[j-l]]]++;
			if(j-l-i>=0)ans[j][go[dif[j-i]-dif[j-i-l]]]++;
		}
	}
	for(int i=1;i<q;i++){
		for(int j=l;j<=n;j++){
			ans[j][i]+=ans[j][i-1];
		}
	}
	for(int i=1;i<=q;i++){
		int pos=0;
		while(per[pos]!=i)pos++;
		for(int j=l;j<=n;j++)
			cout<<ans[j][pos]<<" ";
		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...