Monday, May 4, 2015

UVa 12394 - Peer Review

// UVa 12394 - Peer Review

#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;

string institution[1001];
vector<int> reviewers[1001];

int main() {
	int k, n;
	while ((cin >> k >> n) && (n || k)) {
		string line;
		getline(cin, line);
		for (int i = 1; i <= n; i++)
			reviewers[i].clear();

		for (int i = 1; i <= n; i++) {
			getline(cin, line);
			istringstream istream(line);
			istream >> institution[i];
			int p;
			while (istream >> p)
				reviewers[p].push_back(i);
		}
		int sol = 0;
		for (int p = 1; p <= n; p++) {
			sort(reviewers[p].begin(), reviewers[p].end());
			bool bad = reviewers[p].size() == 0
					|| institution[reviewers[p][0]] == institution[p];
			for (int j = 1; j < reviewers[p].size(); j++) {
				if (reviewers[p][j] == reviewers[p][j - 1]) {
					bad = true;
					break;
				}
				if (institution[reviewers[p][j]] == institution[p]) {
					bad = true;
					break;
				}
			}
			if (reviewers[p].size() != k)
				bad = true;
			if (bad)
				sol++;
		}
		if (sol == 0)
			cout << "NO PROBLEMS FOUND" << endl;
		else if (sol == 1)
			cout << "1 PROBLEM FOUND" << endl;
		else
			cout << sol << " PROBLEMS FOUND" << endl;
	}
	return 0;
}

No comments:

Post a Comment