|
|
вернуться в форумПоказать все сообщения Спрятать все сообщенияtest 2 alex kichkin 18 окт 2011 23:25 could you tell me what is the test #2? I'm trying to find mistake in my solution but it doesn't work at all; my own tests are succses Edited by author 18.10.2011 23:27 Pay attention to that the one can't retweet the message but he has learn it. thank you so much! but one more question... if the fist one tweets "aaaaa earthquake!!!!", the second retweets "RT @name1: aaaaa earthquake!!!!" what should write the third one who wants to retweet: "RT @name2: aaaaa earthquake!!!!" or "RT @name2: RT @name1: aaaaa earthquake!!!!" If the third one retweet the second one's message, should be your second expression "RT @name2: RT @name1: aaaaa earthquake!!!!" ,or if he retweet the first one's message, should be "RT @name1: aaaaa earthquake!!!!" . If both retweet for the third one is legal, choose the shorter one is fine. ""Послано Gao Yang 19 октября 2011 07:52 Pay attention to that the one can't retweet the message but he has learn it."" Please, give this test. Edited by author 21.10.2011 23:54 Edited by author 21.10.2011 23:55 Please, give this test. Where are bugs? =) #include <iostream> #include <map> #include <set> #include <string> #include <vector> using namespace std; class my_less{ public: bool operator()( const pair<string,short> a, const pair<string,short> b ){ return a.second < b.second; } }; int main(){ #ifndef ONLINE_JUDGE freopen("input.txt", "rt", stdin); #endif map<string,bool> DidGet; map<string,short> minLengthMessage; map< string, set<string> > users; set<string> informed;//опповещёные long n; string first_man; cin >> n; for( short i = 0; i < n; ++i ){ //cout << i << endl; string name; cin >> name; users[name] = set<string>(); if( !i ) first_man = name; DidGet[name] = false; minLengthMessage[name] = numeric_limits<short>::max(); long kol; if( scanf("%ld", &kol)!=1 ){while(1)printf("12121");}; for( long j = 0; j < kol; ++j ){ string follower; cin >> follower; users[name].insert( follower ); } } //for(map< string, set<string> >::iterator i = users.begin(); // i != users.end(); // ++i //) { // cout << (*i).first << endl; // for( // set<string>::iterator it = (*i).second.begin(); // it != (*i).second.end(); // ++it // ) // { // cout << " " << (*it) << endl; // } //} string SOS_massage; while( cin.get() != '\n' ); getline( cin, SOS_massage ); if( SOS_massage.size() == 0 || SOS_massage.size()>140 ){while(1)puts("1212");} //cout << "|" << SOS_massage << "|" << endl; multiset< pair<string,short>, my_less > Q; Q.insert( pair<string,short>(first_man,SOS_massage.size()) ); while( !Q.empty() ){ pair<string,short> para = *Q.begin(); Q.erase( Q.begin() ); //cout << "Take:" << para.first << " " << para.second << endl; if( para.second <= 140 &&( !DidGet[para.first] || minLengthMessage[para.first] > para.second) ) { informed.insert( para.first ); DidGet[para.first] = true; minLengthMessage[para.first] = para.second; //cout << "adding for: " << para.first << endl; for( set<string>::iterator it = users[para.first].begin(); it != users[para.first].end(); ++it ) { //cout << " " << *it << endl; Q.insert( pair<string,short>( *it, 6 + para.first.length() + para.second// //доп. симв. + длина имени отправителя + длина сообщ. которое получил отправитель ));// } } } cout << informed.size() << endl; for( set<string> ::iterator it = informed.begin(); it != informed.end(); ++it ) cout << *it << endl; return 0; } Edited by author 22.10.2011 00:31 Re: test 2 IgorKoval(from Pskov) 23 окт 2011 02:07 6 0000000000000000000 2 2222222222222222222222222222 55555555555555555555555555555 111111111111111111111111111111 2 0000000000000000000 2222222222222222222222222222 2222222222222222222222222222 1 55555555555555555555555555555 33333333333333333333333333 4 0000000000000000000 111111111111111111111111111111 2222222222222222222222222222 55555555555555555555555555555 4444444444444444444444444444 4 0000000000000000000 111111111111111111111111111111 33333333333333333333333333 55555555555555555555555555555 55555555555555555555555555555 4 0000000000000000000 111111111111111111111111111111 2222222222222222222222222222 33333333333333333333333333 LOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLO answer: 3 0000000000000000000 2222222222222222222222222222 55555555555555555555555555555 this test isn't correct in names of Japanese. =) |
|
|