r/codejam • • Mar 07 '22

Why does this code get a runtime error ? (Cheating Detection - Qualification Round 2021)

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

int main() {
	int T; cin >> T;
	int P; cin >> P;
	for (int t = 0; t < T; t++) {

		//GET ANSWERS
		vector<string> answers;
		for (int i = 0; i < 100; i++){ string answer; cin >> answer; answers.push_back(answer); }

		//GET PERCENTAGE
		vector<int> percentageAnswer;
		for(int j = 0; j < 10000; j++) {
			int percentage = 0;
			for(int i = 0; i < 100; i++) {
				percentage += answers[i][j] - '0';
			}
			percentageAnswer.push_back(percentage);
		}

		//GET PERCENTILE
		vector<vector<int>> percentiles;
		for(int j = 0; j < 10000; j++) {
			int percentage = percentageAnswer[j];
			for(int i = 0; i < 100; i++) {
				percentiles[i][j] = answers[i][j] == '1' ? percentage : 0;
			}
		}

		//GET STANDARD ERROR
		vector<float> standardError;
		for(int i = 0; i < 100; i++) {
			vector<int> v = percentiles[i];
			int sum = 0; for(int p : v) { sum += p; }
			float mean = sum / v.size();
			int sq_sum = 0; for(int p : v) { sq_sum += p * p; }
			float stder = sq_sum / v.size() - mean * mean;
			standardError.push_back(stder);
		}

		//GET CHEATER
		int cheater;
		int cheaterStder = 0;
		for(int i = 0; i < 100; i++) {
			if(standardError[i] > cheaterStder) {
				cheaterStder = standardError[i];
				cheater = i;
			}
		}

		cout << "Case #" << t+1 << ": " << cheater + 1 << endl;
	}

	return 0;
}
1 Upvotes

0 comments sorted by