Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Why wrong answer?#include<iostream> #include<string> #include<map> #include<algorithm> #include<cstdlib> using namespace std; struct Change{ int year; int model; string name; int ith; string bechg; }change[10000]; int find(string &str) { for(int i = 0; ; i++) if(change[i].name == str) return i; } int find3(int begin,int small,int len) { for(int i = begin; i < len; i++) if(change[i].model == 3 && change[i].year <= small) return i; return -1; } bool cmp(const Change &a,const Change &b) { return a.name < b.name || (a.name == b.name && a.year < b.year); } int adjust(string &str,int i,string &head) { if(change[i].model == 1){ char c[2] = {str[change[i].ith-1],'\0'}; string t(c); str.insert(change[i].ith-1,t); } else if(change[i].model == 2){ char t = str[change[i].ith-1]; str[change[i].ith-1] = str[change[i].ith]; str[change[i].ith] = t; } else head = change[i].bechg; return 0; } int main() { int num,i; cin >> num; string anum, aname; map<string,string> mp; map<string,string> fmp; for(i = 0; i < num; i++){ cin >> anum >> aname; mp[anum] = aname; fmp[aname] = anum; } cin >> num; for(i = 0; i < num; i++){ cin >>change[i].year >> change[i].model >>change[i].name; if(change[i].model == 3) cin >> change[i].bechg; else cin >> change[i].ith; } sort(change,change+num,cmp); int begin,end; string phnum; while(cin >> begin >> end >> phnum){ if(begin == 0 && end == 0) return 0; string head; int dex,chu = 0; while((dex = find3(chu,begin,num)) != -1){ chu = dex+1; mp[fmp[change[dex].name]] = ""; mp[change[dex].bechg] = change[dex].name; } for(i = 0; i < 5; i++){ head = phnum.substr(0,i+1); if(mp[head] != "") break; } phnum.erase(0,i+1); int index = find(mp[head]); string flag = head; while(change[index].name == mp[flag]){ if(change[index].year <= begin || change[index].year > end){ index++; continue; } adjust(phnum,index,head); index++; } cout << head << phnum << endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator