Submission #222505

#TimeUsernameProblemLanguageResultExecution timeMemory
222505errorgornChecker (COCI19_checker)C++14
35 / 110
1168 ms116720 KiB
#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)){ 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
#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...