Codeforces Round #116 (Div. 2, ACM-ICPC Rules) D - Name
2012-04-22 17:51
459 查看
这题细节真多!!!!
#include<iostream> #include<vector> #include<algorithm> #include<cstdio> #include<queue> #include<stack> #include<string> #include<map> #include<set> #include<cmath> #include<cassert> #include<cstring> #include<iomanip> using namespace std; #ifdef _WIN32 #define i64 __int64 #define out64 "%I64d\n" #define in64 "%I64d" #else #define i64 long long #define out64 "%lld\n" #define in64 "%lld" #endif #define FOR(i,a,b) for( int i = (a) ; i <= (b) ; i ++) #define FF(i,a) for( int i = 0 ; i < (a) ; i ++) #define FFD(i,a) for( int i = (a)-1 ; i >= 0 ; i --) #define S64(a) scanf(in64,&a) #define SS(a) scanf("%d",&a) #define LL(a) ((a)<<1) #define RR(a) (((a)<<1)+1) #define SZ(a) ((int)a.size()) #define PP(n,m,a) puts("---");FF(i,n){FF(j,m)cout << a[i][j] << ' ';puts("");} #define pb push_back #define CL(Q) while(!Q.empty())Q.pop() #define MM(name,what) memset(name,what,sizeof(name)) #define read freopen("in.txt","r",stdin) #define write freopen("out.txt","w",stdout) const int inf = 0x3f3f3f3f; const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL; const double oo = 10e9; const double eps = 10e-10; const double pi = acos(-1.0); i64 gcd(i64 _a, i64 _b) { if (!_a || !_b) { return max(_a, _b); } i64 _t; while (_t = _a % _b) { _a = _b; _b = _t; } return _b; }; i64 ext_gcd (i64 _a, i64 _b, i64 &_x, i64 &_y) { if (!_b) { _x = 1; _y = 0; return _a; } i64 _d = ext_gcd (_b, _a % _b, _x, _y); i64 _t = _x; _x = _y; _y = _t - _a / _b * _y; return _d; } i64 invmod (i64 _a, i64 _p) { i64 _ans, _y; ext_gcd (_a, _p, _ans, _y); _ans < 0 ? _ans += _p : 0; return _ans; } const int maxn = 5555; int a[30]; int b[30]; string s; string t; string ans; bool c2; string a2; int find(int x) { for(int i=25;i>=x;i--) { if(a[i]>0) { return true; } } return false; } int f(int x) { for(int i=25;i>x;i--) { if(a[i]>0) { return true; } } return false; } int re(int x) { for(int i=x+1;i<=25;i++) { if(a[i]>0) { return i; } } assert(false); } bool can() { int temp; int xx; for(int i=0;i<t.length();i++) { temp = t[i] - 'a'; if(find(temp) && a[temp]>0) { if(f(temp)) { c2 = true; a2 = ans; xx = re(temp); a2 += char(xx+'a'); for(int u=0;u<=25;u++) { b[u] = a[u]; } b[xx]--; } a[temp]--; ans+=t[i]; } else if(f(temp)) { xx = re(temp); ans += char(xx+'a'); a[xx]--; return true; } else { return false; } } return true; } int main() { MM(a,0); c2 = false; ans = ""; a2 = ""; cin>>s>>t; int temp; for(int i=0;i<s.length();i++) { temp = s[i] - 'a'; a[temp]++; } if(!can()) { if(!c2) { cout<<"-1"<<endl; } else { for(int i=0;i<=25;i++) { while(b[i]>0) { a2 += char(i+'a'); b[i]--; } } cout<<a2<<endl; } } else { for(int i=0;i<=25;i++) { while(a[i]>0) { char add = i+'a'; ans += add; a[i]--; } } if(ans==t) { if(!c2) { cout<<"-1"<<endl; } else { for(int i=0;i<=25;i++) { while(b[i]>0) { a2 += char(i+'a'); b[i]--; } } cout<<a2<<endl; } } else { cout<<ans<<endl; } } // system("pause"); return 0; }
相关文章推荐
- Codeforces Round #116 (Div. 2, ACM-ICPC Rules) C - Letter
- Codeforces Round #145 (Div. 2, ACM-ICPC Rules)——B
- Codeforces Round #145 (Div. 2, ACM-ICPC Rules) Fence
- Codeforces Round #145 (Div. 2, ACM-ICPC Rules)
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) C. Sums of Digits
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) D. Restoring Numbers 构造 数学
- Codeforces Round #145 (Div. 1, ACM-ICPC Rules)A
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) 部分题解
- Codeforces Round #287 (Div. 2) C. Guess Your Way Out! ACM解题报告(二叉树)
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song 算贡献+前缀和
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) E. Pretty Song
- codeforces水题100道 第十九题 Codeforces Round #109 (Div. 2) A. I_love_%username% (brute force)
- Codeforces Round #145 (Div. 1, ACM-ICPC Rules)B dp
- Codeforces Round #284 (Div. 2): D. Name That Tune(概率DP)
- Codeforces Round #279 (Div. 2) C
- Codeforces Round #318 (Div. 2) D - Bear and Blocks
- Codeforces Round #363 (Div. 2) B 暴力
- Codeforces Round #372 (Div. 2)
- ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) C. Molly's Chemicals