예제 #1
0
int main() {
		// Taking input of number of testcases to be solved.
		uint32_t testcases =  g_fi.ReadNext();


		//Loop to go through process number of testcases time.
		for (uint32_t i = 0; i < testcases; ++i) {
			
				// This map will hold the level wise total score of soint.
				map<int,int> sointlevelscore;
				// This map will hold the level wise total score of sofloat.
				map<int,int> sofloatlevelscore;


				// Inputing number of Warriers in each team Soint and soFloat
				uint32_t sointN = g_fi.ReadNext();
				uint32_t sofloatM = g_fi.ReadNext();
				
				for ( uint32_t j  = 0;j < sointN ; j++ ) {
					uint32_t chakra = g_fi.ReadNext();
					uint32_t level = g_fi.ReadNext();
					if (sointlevelscore.find(level) == sointlevelscore.end()) {
						sointlevelscore[level] = chakra;
					} else {
						sointlevelscore[level] = sointlevelscore.find(level)->second + chakra;
					}
				}

				for ( uint32_t j  = 0;j < sofloatM ; j++ ) {
					uint32_t chakra = g_fi.ReadNext();
					uint32_t level = g_fi.ReadNext();
					if (sofloatlevelscore.find(level) == sofloatlevelscore.end()) {
						sofloatlevelscore[level] = chakra;
					} else {
						sofloatlevelscore[level] = sofloatlevelscore.find(level)->second + chakra;
					}
				}
				int minimumchakra = 0;
	//To check how much time actual logic takes
/*
				map<int,int>::iterator chakrainterator;
				for ( chakrainterator = sointlevelscore.begin();chakrainterator != sointlevelscore.end();chakrainterator++) {
					int score = ( sofloatlevelscore[(*chakrainterator).first] - (*chakrainterator).second ); 
					if ( score > 0 ) {
						minimumchakra += score; 						
					}
				}
*/

				g_fo.PrintUint(minimumchakra, '\n');
		}
		g_fo.Flush();
		return 0;
}
예제 #2
0
int main() {
	char line[80];
	FastOutput output;
	int nCases;
	scanf("%d\n", &nCases);
	//gets(line);
	//sscanf(line, "%d\n", &nCases);

	for(int caseNum=1; caseNum<=nCases;caseNum++) {
		int length; 
		scanf("%d\n", &length);
		//gets(line);
		//sscanf(line, "%d\n", &length);

		nItems = 0;
		Subset subsets[length+100];//not technically correct?
		mySubsets = subsets;

		for(int i=0;i<length;i++) {

			char *s1 = new char[21]{'\0'};
			char *s2 = new char[21]{'\0'};

			scanf("%s %s\n", s1,s2);
			//gets(line);
			//sscanf(line, "%s %s\n", s1,s2);
			int index1 = trie.insert(s1);
			int index2 = trie.insert(s2);
			
			//printf ("%d %d\n", index1, index2);
			Union(index1,index2);

			output.PrintUint(subsets[find(index1)].total,'\n');
		}
		if (caseNum < nCases) {
			trie.reset();
		}
	}
		
	return 0;
}
예제 #3
0
int main() {
	readAll();
	//printf ("Done = %s\n", A[arrayIndex+1000]);
	//return 0;
	clearHashes.reserve(MAX_FRIENDS);
	int nCases; 
	sscanf(A[arrayIndex++],"%d",&nCases);

	for(int caseNum=1; caseNum<=nCases;caseNum++) {
		int length; sscanf(A[arrayIndex++],"%d",&length);
		newIndex = 0;

		for(int i=0;i<length+10;i++) {
			subsets[i].parent=i;
			subsets[i].total=1;
		}
		for(int i=0;i<length;i++) {
			int index1 = getNewIndex();
			int index2 = getNewIndex();
			//printf("%d %d\n",index1, index2);
			
			Union(index1,index2);
			output.PrintUint(subsets[find(index1)].total,'\n');
		}
		#ifndef UNORDERED_MAP
		if (caseNum < nCases) {
			//reset
			for(auto &x:clearHashes) {
				myTable[x].clear();
			}
		}
		#endif
	}
	
	return 0;
}
예제 #4
0
 fo(i, m)
 {
     //cout<<ans[i]<<endl;
     g_fo.PrintUint(ans[i], '\n');        
 }