Submission #1702708
Source Code Expand
#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <set>
#include <queue>
#include <limits>
#include <deque>
#include <locale>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <wctype.h>
#include <algorithm>
#include <bitset>
#include <map>
#include <iomanip>
#include <ios>
#include <iostream>
#include <vector>
#include <cwchar>
#include <cwctype>
#define mp make_pair
#define fs first
#define se second
#define memset(a,t) memset(a,t,sizeof(a))
#define all(v) v.begin(),v.end()
#define eprintf(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define MN 0LL
#define Mx 2000000005
#define Mn -Mx
#define MX 20000000000000005
using namespace std;
int readint(){
char c;
while(c=getchar(),(c<'0'||c>'9')&&c!='-');
bool flag=(c=='-');
if(flag)c=getchar();
int x=0;
while(c>='0'&&c<='9'){
x=x*10+c-48;
c=getchar();
}
return flag?-x:x;
}
inline string tos(int x){
string s;
while(x) s=(char)(x%10+'0')+s,x/=10;
return s;
}
inline int pt(int a[],int l,int r){
int p,i,j;
p=a[l];
i=l;
j=r+1;
for(;;){
while(a[++i]<p) if(i>=r) break;
while(a[--j]>p) if(j<=l) break;
if(i>=j) break;
else swap(a[i],a[j]);
}
if(j==l) return j;
swap(a[l],a[j]);
return j;
}
inline void q_sort(int a[],int l,int r){
int q;
if(r>l){
q=pt(a,l,r);
q_sort(a,l,q-1);
q_sort(a,q+1,r);
}
}
int main(){
string s,t,v;
vector<int> number;
int i,j,n;
cin>>s;
t=s;
reverse(t.begin(),t.end());
if(t==s){
cout<<0<<endl;
return 0;
}
t="";
for(i=0;i<s.size();i++) if(s[i]!='x') t+=s[i],number.push_back(i);
v=t;
reverse(v.begin(),v.end());
if(v!=t){
cout<<-1<<endl;
return 0;
}
n=t.size();
if(n%2==1){
long long tt=number[n/2],ans=0;
string a,b;
a=s.substr(0,tt);
b=s.substr(tt+1);
reverse(b.begin(),b.end());
for(int i=0;;i++){
if(i>=a.size()||i>=b.size()) break;
if(a[i]!=b[i]){
ans++;
if(a[i]=='x'){
b.insert(i,"x");
}else{
a.insert(i,"x");
}
}
}
if(a.size()!=b.size()) ans+=abs((int)(a.size())-(int)(b.size()));
cout<<ans<<endl;
return 0;
return 0;
}else{
long long tt1=number[n/2],tt2=number[n/2-1],ans=0;
string a,b;
a=s.substr(0,tt2);
b=s.substr(tt1+1);
reverse(b.begin(),b.end());
for(int i=0;;i++){
if(i>=a.size()||i>=b.size()) break;
if(a[i]!=b[i]){
ans++;
if(a[i]=='x'){
b.insert(i,"x");
}else{
a.insert(i,"x");
}
}
}
if(a.size()!=b.size()) ans+=abs((int)(a.size())-(int)(b.size()));
cout<<ans<<endl;
return 0;
return 0;
}
}
Submission Info
Submission Time |
|
Task |
C - Two Alpinists |
User |
paulzrm |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
2782 Byte |
Status |
WA |
Exec Time |
1 ms |
Memory |
256 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt |
All |
0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt |
Case Name |
Status |
Exec Time |
Memory |
0_000.txt |
WA |
1 ms |
256 KB |
0_001.txt |
AC |
1 ms |
256 KB |
0_002.txt |
WA |
1 ms |
256 KB |
0_003.txt |
WA |
1 ms |
256 KB |
1_004.txt |
AC |
1 ms |
256 KB |
1_005.txt |
AC |
1 ms |
256 KB |
1_006.txt |
AC |
1 ms |
256 KB |
1_007.txt |
WA |
1 ms |
256 KB |
1_008.txt |
WA |
1 ms |
256 KB |
1_009.txt |
WA |
1 ms |
256 KB |
1_010.txt |
WA |
1 ms |
256 KB |
1_011.txt |
WA |
1 ms |
256 KB |
1_012.txt |
WA |
1 ms |
256 KB |
1_013.txt |
WA |
1 ms |
256 KB |
1_014.txt |
WA |
1 ms |
256 KB |
1_015.txt |
WA |
1 ms |
256 KB |
1_016.txt |
WA |
1 ms |
256 KB |
1_017.txt |
WA |
1 ms |
256 KB |
1_018.txt |
WA |
1 ms |
256 KB |
1_019.txt |
WA |
1 ms |
256 KB |
1_020.txt |
WA |
1 ms |
256 KB |