Submission #1239243

#TimeUsernameProblemLanguageResultExecution timeMemory
1239243moondarksideToy Train (IOI17_train)C++20
0 / 100
5 ms1096 KiB
#include<bits/stdc++.h>
using namespace std;



std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {

	vector<vector<int>> Next(a.size());
	vector<vector<int>> NextInv(a.size());

	int n=a.size();

	std::vector<int> rC=r;
	for(int sur=0; sur<n; sur++) {
		vector<int> prc=rC;
		rC=r;

		bool camb=true;
		for(int ronda=0; ronda<n && camb; ronda++) {
			camb=false;
			for(int i=0; i<n; i++) {
				if(rC[i]!=1) {
					if(a[i]==1) {
						for(int j=0; j<Next[i].size(); j++) {
							if(rC[Next[i][j]]==1) {
								rC[i]=1;
								camb=true;
							}

						}

					}
					else {
						int ns=1;
						for(int j=0; j<Next[i].size(); j++) {
							ns=ns*rC[Next[i][j]];

						}
						if(ns==1) {
							camb=true;
						}
						rC[i]=ns;
					}
				}

			}

		}

        camb=true;
		for(int ronda=0; ronda<n && camb; ronda++) {
            camb=false;
			for(int i=0; i<n; i++) {
				if(rC[i]==1) {
					if(a[i]==0) {
						for(int j=0; j<Next[i].size(); j++) {
							if(rC[Next[i][j]]==0) {
								rC[i]=0;
								camb=true;
							}

						}

					}
					else {
						int ns=1;
						for(int j=0; j<Next[i].size(); j++) {
							ns=ns*(1-rC[Next[i][j]]);

						}
						rC[i]=1-ns;
						if(1-ns==0){
						    camb=true;
						}
					}
				}

			}

		}

        bool ret=true;
		for(int i=0; i<n; i++) {
			r[i]=r[i] && rC[i];
            if(prc[i]!=rC[i]){
                ret=false;
            }

		}
		if(ret){
		    vector<int> Sol;
	        for(int i=0; i<n; i++) {
		        Sol.push_back(rC[i]);
	        }
	        return Sol;
		}

	}
	vector<int> Sol;
	        for(int i=0; i<n; i++) {
		        Sol.push_back(rC[i]);
	        }
	        return Sol;

	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...