用flag来调节奇数和偶数
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<vector> #include<map> #define MAXN 200010 int n,m1,m2,ans,nn; char a[MAXN],tmp[MAXN]; using namespace std; inline bool check() { if(nn<=1) return true; for(int i=1;i<nn;i+=2) { if(a[i]==a[i+1]) return false; } return true; } inline void solve() { int cnt=0; int flag=0; for(int i=1;i<=nn;i++,flag^=1) { if(i!=nn&&flag==0) { if(a[i]==a[i+1]) { ans++; flag^=1; continue; } } tmp[++cnt]=a[i]; } nn=cnt; for(int i=1;i<=nn;i++) a[i]=tmp[i]; // printf("nn=%d\n",nn); } int main() { #ifndef ONLINE_JUDGE freopen("ce.in","r",stdin); #endif scanf("%d",&n); scanf("%s",a+1); nn=n; if(check()) { cout<<0<<endl; for(int i=1;i<=n;i++) cout<<a[i]; cout<<endl; return 0; } while(check()==false) solve(); if(nn&1) ans++,nn--; cout<<ans<<endl; for(int i=1;i<=nn;i++) cout<<a[i]; cout<<endl; return 0; }