这题。
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int cnt0,cnt1,cnt2;
int ans=0;
queue<int> q0,q1,q2;
int main(){
// freopen("data18.in","r",stdin);
// freopen("my1.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
int x;
cin>>x;
if(x%3==0){
cnt0++;
q0.push(i);
}
else if(x%3==1){
cnt1++;
q1.push(i);
}
else{
cnt2++;
q2.push(i);
}
}
ans=max(cnt0/3+cnt1/3+cnt2/3+min(cnt0%3,min(cnt1%3,cnt2%3)),min(cnt0,min(cnt1,cnt2))+(cnt0-min(cnt0,min(cnt1,cnt2)))/3+(cnt1-min(cnt0,min(cnt1,cnt2)))/3+(cnt2-min(cnt0,min(cnt1,cnt2)))/3);
cout<<ans<<endl;
if(ans==(cnt0/3+cnt1/3+cnt2/3+min(cnt0%3,min(cnt1%3,cnt2%3)))){
int zxc=min(cnt1%3,min(cnt2%3,cnt0%3));
for(int i=1;i<=cnt0/3;i++){
if(i==cnt0/3&&cnt1/3==0&&cnt2/3==0&&zxc==0){
cout<<q0.front()<<" ";
q0.pop();
cout<<q0.front()<<" ";
q0.pop();
cout<<q0.front();
q0.pop();
}
else{
cout<<q0.front()<<" ";
q0.pop();
cout<<q0.front()<<" ";
q0.pop();
cout<<q0.front()<<endl;
q0.pop();
}
}
for(int i=1;i<=cnt1/3;i++){
if(i==cnt1/3&&cnt2/3==0&&zxc==0){
cout<<q1.front()<<" ";
q1.pop();
cout<<q1.front()<<" ";
q1.pop();
cout<<q1.front();
q1.pop();
}
else{
cout<<q1.front()<<" ";
q1.pop();
cout<<q1.front()<<" ";
q1.pop();
cout<<q1.front()<<endl;
q1.pop();
}
}
for(int i=1;i<=cnt2/3;i++){
if(i==cnt2/3&&zxc==0){
cout<<q2.front()<<" ";
q2.pop();
cout<<q2.front()<<" ";
q2.pop();
cout<<q2.front();
q2.pop();
}
else{
cout<<q2.front()<<" ";
q2.pop();
cout<<q2.front()<<" ";
q2.pop();
cout<<q2.front()<<endl;
q2.pop();
}
}
for(int i=1;i<=zxc;i++){
if(i==zxc){
cout<<q0.front()<<" ";
q0.pop();
cout<<q1.front()<<" ";
q1.pop();
cout<<q2.front();
q2.pop();
return 0;
}
cout<<q0.front()<<" ";
q0.pop();
cout<<q1.front()<<" ";
q1.pop();
cout<<q2.front()<<endl;
q2.pop();
}
return 0;
}
else{
for(int i=1;i<=min(cnt0,min(cnt1,cnt2));i++){
cout<<q0.front()<<" ";
cnt0--;
q0.pop();
cout<<q1.front()<<" ";
cnt1--;
q1.pop();
cout<<q2.front()<<endl;
cnt2--;
q2.pop();
}
for(int i=1;i<=cnt0/3;i++){
cout<<q0.front()<<" ";
q0.pop();
cout<<q0.front()<<" ";
q0.pop();
cout<<q0.front()<<endl;
q0.pop();
}
for(int i=1;i<=cnt1/3;i++){
cout<<q1.front()<<" ";
q1.pop();
cout<<q1.front()<<" ";
q1.pop();
cout<<q1.front()<<endl;
q1.pop();
}
for(int i=1;i<=cnt2/3;i++){
cout<<q2.front()<<" ";
q2.pop();
cout<<q2.front()<<" ";
q2.pop();
if(i==cnt2/3){
cout<<q2.front();
q2.pop();
}
else{
cout<<q2.front()<<endl;
q2.pop();
}
}
}
return 0;
}
/*
0 1 2
1 1 1
2 2 2
0 0 0
*/
啥叫 wrong output format Unexpected end of file - int32 expected。
给出 checker :
#include "testlib.h"
using namespace std;
const int N=2e5+10;
long long n,a[N];
int k;
int p[N];
int main(int argc,char *argv[])
{
registerTestlibCmd(argc,argv);
n=inf.readInt(1,200'000,"n");
inf.readEoln();
for(int i=1;i<=n;i++)
{
a[i]=inf.readInt(1,1'000'000'000,"a_i");
if(i!=n)inf.readSpace();
}
int mxk=ans.readInt(0,n,"mxk");
k=ouf.readInt(0,n,"k");
if(k!=mxk)
{
quitf(_wa,"Your k is %d, but the answer is %d",k,mxk);
}
// ouf.readEoln();
for(int i=1;i<=k;i++)
{
int v[3]={0,0,0};
for(int j=0;j<3;j++)
{
v[j]=ouf.readInt(1,n,"v_j");
}
// if(i!=k)ouf.readEoln();
sort(v,v+3);
if ((a[v[0]]+a[v[1]]+a[v[2]])%3!=0) quitf(_wa,"The sum of the %d-th group \%3!=0",i);
for(int j=0;j<2;j++)
if(v[j]==v[j+1])
{
quitf(_wa,"The %d-th group includes 2 same children",i);
}
for(int j=0;j<3;j++)
if(p[v[j]])
{
quitf(_wa,"The %d-th children is in the %d-th group and the %d-th group",v[j],p[v[j]],i);
}
for(int j=0;j<3;j++)
p[v[j]]=i;
}
while(!ouf.eof())ouf.readChar();
ouf.readEof();
quitf(_ok,"You gave a right solution");
return 0;
}
求大神看看吧qwq