class Sortness {
public:
double getSortness(vector <int> a) {
double sum = 0;
for(int i=0; i<a.size(); ++i){
for(int j=0; j<a.size(); ++j){
if(i < j && a[i] > a[j])++sum;
if(j < i && a[j] > a[i])++sum;
}
}
return sum / (double)a.size();
}
};
450class Arrows {
public:
int longestArrow(string s) {
int mx = -1;
for(int i=0; i<s.size(); ++i){
int cnt = 0;
if( s[i] == '<' ){
++cnt;
if( i+1 < s.size() && ( s[i+1] == '=' || s[i+1] == '-' ) ){
for(int j=1; i+j<s.size() && s[i+1] == s[i+j]; ++j){
++cnt;
}
}
}
if( s[i] == '>' ){
++cnt;
if( 0 <= i-1 && ( s[i-1] == '=' || s[i-1] == '-' ) ){
for(int j=1; 0<=i-j && s[i-1] == s[i-j] ; ++j){
++cnt;
}
}
}
if( cnt )mx = max(mx, cnt);
}
return mx;
}
};
1000無理。
class NextPalindromicNumber {
public:
string getNext(string n) {
if( count( n.begin(), n.end(), '9' ) == n.size() ){
fill( n.begin(), n.end(), '0' );
n[0] = '1';
n += '1';
return n;
}
string s = n.substr(0, n.size() / 2 + n.size() % 2);
string t = n.substr(0, n.size() / 2);
reverse( t.begin(), t.end() );
string S = s + t;
reverse( s.begin(), s.end() );
cout << s << endl;
++s[0];
for(int i=0; i+1<s.size(); ++i){
if( '9' < s[i] ){
s[i] = '0';
++s[i+1];
}
}
t = s;
reverse( s.begin(), s.end() );
if( n.size() % 2 )t.erase( t.begin() );
string T = s + t;
cout << S << ' ' << T << endl;
if(n < S)return S;
return T;
}
};
0 件のコメント :
コメントを投稿