# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1140585 | mnbvcxz123 | Trobojnica (COCI19_trobojnica) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define fi first
#define se second
int get(char c){
return c-'0';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n;
cin>>n;
string s;
cin>>s;
vector<int>oc(4,0);
pref[0]=0;
for(int i=0;i<n;++i)
++oc[get(s[i])];
vector<pair<int,pair<int,int>>>v,ans;
for(int i=0;i<n;++i){
v.push_back(make_pair(val[i],make_pair(i,(i+1)%n)));
while(v.size()>=2){
int m=v.size();
if(v[m-1].fi!=v[m-2].fi and !(oc[v[m-1].fi]==1 and oc[v[m-2].fi]==1)){
auto v1=v[m-1],v2=v[m-2];
int col=6-v1.fi-v2.fi;
++oc[col];
--oc[v1.fi];
--oc[v2.fi];
v.pop_back();
v.pop_back();
v.push_back(make_pair(col,make_pair(v2.se.fi,v1.se.se)));
ans.push_back(v.back());
}else break;
}
}
if(v.size()==3 and v[0].fi!=v[1].fi and v[0].fi!=v[2].fi and v[1].fi!=v[2].fi){
cout<<"DA\n";
for(auto&i:ans)
cout<<i.se.fi+1<<' '<<i.se.se+1<<' '<<i.fi<<'\n';
}else
cout<<"NE\n";
}