QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#61690 | #1807. Distribute the Bars | AlienCollapsar | WA | 4ms | 6008kb | C++14 | 1.2kb | 2022-11-14 16:17:26 | 2022-11-14 16:17:48 |
Judging History
answer
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
const int Maxn=1e5+5;
int pri[Maxn],tot;
bool vis[Maxn];
void getPrime(int n){
for(int i=2;i<=n;++i){
if(!vis[i])pri[++tot]=i;
for(int j=1;j<=tot&&i*pri[j]<=n;++j){
vis[i*pri[j]]=1;
if(i%pri[j]==0)break;
}
}
}
vector<int>ans[Maxn];
int main(){
int n;cin>>n;
getPrime(n);
if(!vis[n]){cout<<-1<<'\n';return 0;}
if(n&1){
int a,b;
for(int i=1;i<=tot;++i)
if(n%pri[i]==0){a=pri[i],b=n/pri[i];break;}
int m=a*(b-a);
for(int i=1,j=m,k=0;i<j;++i,--j,++k){
ans[k].emplace_back((i<<1)-1);
ans[k].emplace_back((j<<1)-1);
}
int st=0;
for(int i=m+1;i<=n;i+=a,(++st)%=a)
for(int j=0;j<a;++j)
ans[(st+j)%a].emplace_back((i+j<<1)-1);
cout<<a<<'\n';
for(int i=0;i<a;++i){
cout<<ans[i].size()<<' ';
for(int x:ans[i])cout<<x<<' ';cout<<'\n';
}
}else{
cout<<(n>>1)<<'\n';
for(int i=1,j=n;i<j;++i,--j)
cout<<2<<' '<<(i<<1)-1<<' '<<(j<<1)-1<<'\n';
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 4ms
memory: 5680kb
input:
4
output:
2 2 1 7 2 3 5
result:
ok OK (2 groups)
Test #2:
score: 0
Accepted
time: 2ms
memory: 5824kb
input:
2
output:
-1
result:
ok OK (impossible)
Test #3:
score: 0
Accepted
time: 1ms
memory: 5684kb
input:
3
output:
-1
result:
ok OK (impossible)
Test #4:
score: -100
Wrong Answer
time: 3ms
memory: 6008kb
input:
1659
output:
3 5 1 3299 3301 3311 3315 5 3 3297 3303 3307 3317 5 5 3295 3305 3309 3313
result:
wrong answer Not all bars are distributed