# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
112423 | SuperJumbo | Lottery (CEOI18_lot) | C++14 | 2646 ms | 8440 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,l;
scanf("%d %d",&n,&l);
vector<int> a(n);
for(int i = 0;i<n;i++)scanf("%d",&a[i]);
int q;scanf("%d",&q);
vector<int> queries;
map<int,vector<int>> ans;
for(int i = 0;i<q;i++){
int x;scanf("%d",&x);
queries.push_back(x);
ans[x] = vector<int> (n-l+1,0);
}
vector<int> v(n);
vector<int> sum(n,0);
for(int i = 0;i<n;i++){
int u = i - l;
if(i>=l){
for(int j = u+1,x = 0;j<n;x++,j++)
sum[x]-=(a[u] != a[j]);
}
for(int j = i+1,x = 0;j<n;x++,j++){
sum[x]+=(a[i] != a[j]);
if(i>=l-1){
auto y = ans.lower_bound(sum[x]);
if(y == ans.end())continue;
ans[y->first][u+1]++;
ans[y->first][u+2+x]++;
}
}
}
auto x = ans.begin(),y=x;
advance(y,1);
while(y!=ans.end()){
for(int i = 0;i<n-l+1;i++)
ans[y->first][i] += ans[x->first][i];
x = y;
advance(y,1);
}
for(auto u : queries){
for(auto v:ans[u])
printf("%d ",v);
printf("\n");
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |