| ||||||||||
| 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 | |||||||||
Re:TLE 求告知哪个部分超时In Reply To:TLE 求告知哪个部分超时 Posted by:osfpu at 2012-03-02 11:04:06 > #include <iostream>
> #include <string>
> #include <vector>
> #include <cctype>
> #include <algorithm>
> using namespace std;
> bool cmp(string a,string b)
> {
> if(a < b)
> {
> return true;
> }
> else
> {
> return false;
> }
> }
>
> int main()
> {
> int number;
> cin>>number; // the number of telephone numbers( number <= 100000 )
> vector<string> tel; //store the processing telephone numbers
> int i;
> for(i = 0; i < number; i++) //processing the telephone numbers
> {
> string strtemp1,strtemp2(7,' ');
> cin>>strtemp1;
> for(string::size_type j = 0, k = 0; j < strtemp1.size(); ++j)
> {
> if(strtemp1[j] != '-')
> {
> if(isalpha(strtemp1[j]))
> {
> if(strtemp1[j] < 'Q')
> {
> strtemp1[j] = (strtemp1[j] - 65) / 3 + 50;
> }
> else
> {
> strtemp1[j] = (strtemp1[j] - 66) / 3 + 50;
> }
> }
> strtemp2[k++] = strtemp1[j];
> }
> }
> tel.push_back(strtemp2);
> }
> sort(tel.begin(),tel.end(),cmp);
> bool flag = false; //judgment the exist of same numbers
> for(int j = 0, k = 1; j < tel.size() - 1; )
> {
> if(tel[j] != tel[j+1])
> {
> tel.erase(tel.begin() + j);
> }
> else
> {
> if(!flag)
> {
> flag = true;
> }
> k++;
> for(int x = 2; x < tel.size() - j; ++x)
> {
> if(tel[j] == tel[j+x])
> {
> k++;
> }
> else
> {
> break;
> }
> }
> for(i = 0; i < 3; i++)
> {
> cout<<tel[j][i];
> }
> cout<<"-";
> for(i = 3; i < 7; i++)
> {
> cout<<tel[j][i];
> }
> cout<<" "<<k<<endl;
> j = j + k;
> k = 1;
> }
> }
> if(!flag)
> {
> cout<<"No duplicates. "<<endl;
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator