1015
#include <algorithm> #include <iostream> #include <vector> #include <map> #include <set> #include <string> using namespace std; int main () { int N; int a[6]; int t; vector<int> vi; map<int,int> m; map<int, vector < int > > r; #ifdef _ALEX_ freopen("input.in", "r", stdin); #endif cin >> N; for(int i = 1; i <= N; i++) { for(int j = 0; j < 6; j++) cin >> a[j]; vi.clear(); vi.push_back(a[0]*10 + a[1]); vi.push_back(a[2]*10 + a[4]); vi.push_back(a[3]*10 + a[5]); int k = 0; for( int h = 0; h < 3; h++) { if( vi[h]%10 > vi[h]/10) { int t = (vi[(h+1)%3]/10)*1000 + (vi[(h+2)%3]%10)*100 + (vi[(h+1)%3]%10)*10 + (vi[(h+2)%3]/10); k = max(k,vi[h]*10000 + t); for( int j = 0; j < 4; j++) { t = (t%1000)*10 + t/1000; k = max(k, vi[h]*10000 + t); } } else { int t = (vi[(h+2)%3]/10)*1000 + (vi[(h+1)%3]%10)*100 + (vi[(h+2)%3]%10)*10 + (vi[(h+1)%3]/10); k = max(k, ((vi[h]%10)*10 + vi[h]/10)*10000 + t); for( int j = 0; j < 4; j++) { t = (t%1000)*10 + t/1000; k = max(k, ((vi[h]%10)*10 + vi[h]/10)*10000 + t); } } } if( m[k] == 0) { m[k] = i; r[i].push_back(i); } else { r[m[k]].push_back(i); } } cout << m.size() << endl; for(int i = 1; i <= N; i++) { if( r[i].size() != 0 ) { for(int j = 0; j < r[i].size(); j++) { cout << r[i][j] << " "; } cout << endl; } } return 0; }
page revision: 0, last edited: 19 Nov 2006 19:52