一般排序會在第3測資TLE
用優先權佇列取代即可
#include<bits/stdc++.h>
using namespace std;
int main(int argc, char** argv){
ios::sync_with_stdio(0);
cin.tie(0);
string line;
while(cin>>line){
int l=line.length();
queue<int> q;
for(int i=1;i<=l/2;i++)
if(l%i==0)
q.push(i);
bool ri=false;
while(!q.empty()){
int n=q.front();
priority_queue<string,vector<string>,greater<string> > pq;
string s[l/n];
for(int i=0;i<l/n;i++){
for(int j=0;j<n;j++)
s[i]+=line[i*n+j];
pq.push(s[i]);
}
string ch;
while(!pq.empty()){
ch+=pq.top();
pq.pop();
}
if(ch!=line){
cout<<ch<<'\n';
ri=true;
}
q.pop();
}
if(!ri)
cout<<"bomb!\n";
}
return 0;
}
通過檢測
通過檢測
通過檢測