#include<iostream>
using namespace std;
bool b[1000000500];
int main(){
int n,ans=-1;
scanf("%d",&n);
for(int day=0;;day++){
int cnt=3;
bool flag=false;
for(int indx=1;indx<=n;indx++){
if(b[indx])continue;
if(cnt>2){
cnt=0;
b[indx]=true;
flag=true;
if(indx==n)ans=day+1;
}
cnt++;
}
if(!flag){
printf("%d ",day);
break;
}
}
printf("%d",ans);
return 0;
}
这份代码在小图灵和洛谷中都是90分左右,但官方评测0分 预估可能是MLE
#include<iostream>
using namespace std;
bool b[1000500];
int main(){
int n,ans=-1;
scanf("%d",&n);
if(n>=1000500)return -1;
for(int day=0;;day++){
int cnt=3;
bool flag=false;
for(int indx=1;indx<=n;indx++){
if(b[indx])continue;
if(cnt>2){
cnt=0;
b[indx]=true;
flag=true;
if(indx==n)ans=day+1;
}
cnt++;
}
if(!flag){
printf("%d ",day);
break;
}
}
printf("%d",ans);
return 0;
}