Submission #222511

# Submission time Handle Problem Language Result Execution time Memory
222511 2020-04-13T08:34:19 Z errorgorn Checker (COCI19_checker) C++14
35 / 110
1211 ms 116468 KB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ii pair<ll,ll>
#define iii pair<ii,ll>
//#define endl '\n'
 
int n;
string sides;
 
set<int> al[200005];
 
struct trip{
	int a,b,c;
	
	trip (int _a,int _b,int _c){
		a=_a,b=_b,c=_c;
	}
	
};
 
vector<trip> tri;
map<ii,char> color;
 
bool dfs(int i,int j){ 
	//cout<<i<<" "<<j<<endl;
	//note here that it returns true if triangulation does not exist
	
	if ((j+1)%n==i){
		al[i].erase(j);
		al[j].erase(i);
		return false;
	}
	else{
		auto curr=al[i].find(j);
		auto it=(curr==(--al[i].end()))?al[i].begin():next(curr);
		
		int temp=*it;
		
		//cout<<"DEBUG: "<<i<<" "<<*it<<" "<<j<<endl;
		tri.push_back(trip(i,j,*it));
		
		if (i<j && i<temp && temp<j) return true;
		if (j<i && (i<temp || temp<j)) return true;
	
		
		al[i].erase(j);
		al[j].erase(i);
		
		if (dfs(i,temp)||dfs(temp,j)) return true;
		
		return false;
	}
	
}
 
int main(){
	//freopen("input.txt","r",stdin);
	
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cin>>n; //bye bye
	cin>>n;
	
	cin>>sides;
	
	for (int x=0;x<n;x++){
		al[x].insert((x+1)%n);
		al[(x+1)%n].insert(x);
		color[ii(x,(x+1)%n)]=sides[x];
		color[ii((x+1)%n,x)]=sides[x];
	}
	
	int a,b;
	char c;
	for (int x=3;x<n;x++){
		cin>>a>>b>>c;
		a--,b--;
		
		al[a].insert(b);
		al[b].insert(a);
		
		color[ii(a,b)]=c;
		color[ii(b,a)]=c;
	}
	
	//we need another case for n==4 bruh
	if (n==4){
		if (a>b) swap(a,b);
		if (a==0 && b==2){
			tri.push_back(trip(0,1,2));
			tri.push_back(trip(2,3,0));
		}
		else if (a==1 && b==3){
			tri.push_back(trip(1,2,3));
			tri.push_back(trip(3,0,1));
		}
		else{
			cout<<"neispravna triangulacija";
			return 0;
		}
	}
	else {
		if (dfs(0,1) || tri.size()!=n-2){
			cout<<"neispravna triangulacija";
			return 0;
		}
	}
	
	//now we check for legit colours
 
	
	for (auto &it:tri){
		//cout<<it.a<<" "<<it.b<<" "<<it.c<<endl;
		//cout<<color[ii(it.a,it.b)]<<" "<<color[ii(it.b,it.c)]<<" "<<color[ii(it.c,it.a)]<<endl;
		
		if (color[ii(it.a,it.b)]==color[ii(it.a,it.c)] ||
			color[ii(it.b,it.a)]==color[ii(it.b,it.c)] ||
			color[ii(it.c,it.a)]==color[ii(it.c,it.b)] ){
				cout<<"neispravno bojenje";
				return 0;
			}
	}
	
	cout<<"tocno";
	
}
 
//neispravna triangulacija -2
//neispravno bojenje -1
//tocno 0

Compilation message

checker.cpp: In function 'int main()':
checker.cpp:105:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (dfs(0,1) || tri.size()!=n-2){
                   ~~~~~~~~~~^~~~~
# Verdict Execution time Memory Grader output
1 Correct 10 ms 9728 KB Output is correct
2 Correct 13 ms 9856 KB Output is correct
3 Correct 13 ms 9728 KB Output is correct
4 Correct 11 ms 9728 KB Output is correct
5 Correct 13 ms 9856 KB Output is correct
6 Correct 11 ms 9728 KB Output is correct
7 Correct 11 ms 9856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 9728 KB Output is correct
2 Correct 13 ms 9856 KB Output is correct
3 Correct 13 ms 9728 KB Output is correct
4 Correct 11 ms 9728 KB Output is correct
5 Correct 13 ms 9856 KB Output is correct
6 Correct 11 ms 9728 KB Output is correct
7 Correct 11 ms 9856 KB Output is correct
8 Correct 17 ms 10624 KB Output is correct
9 Correct 19 ms 10624 KB Output is correct
10 Incorrect 15 ms 10624 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1113 ms 101000 KB Output is correct
2 Correct 1077 ms 101108 KB Output is correct
3 Incorrect 1054 ms 101128 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1055 ms 101044 KB Output is correct
2 Correct 1076 ms 101116 KB Output is correct
3 Correct 898 ms 101088 KB Output is correct
4 Correct 877 ms 101240 KB Output is correct
5 Correct 874 ms 101112 KB Output is correct
6 Correct 1211 ms 116468 KB Output is correct
7 Correct 1195 ms 114972 KB Output is correct
8 Correct 982 ms 112116 KB Output is correct
9 Correct 954 ms 111244 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 9728 KB Output is correct
2 Correct 13 ms 9856 KB Output is correct
3 Correct 13 ms 9728 KB Output is correct
4 Correct 11 ms 9728 KB Output is correct
5 Correct 13 ms 9856 KB Output is correct
6 Correct 11 ms 9728 KB Output is correct
7 Correct 11 ms 9856 KB Output is correct
8 Correct 17 ms 10624 KB Output is correct
9 Correct 19 ms 10624 KB Output is correct
10 Incorrect 15 ms 10624 KB Output isn't correct
11 Halted 0 ms 0 KB -