Need help in task

Revision en2, by programmist_, 2018-06-13 18:49:16

Task. I got Wrong Answer on first test.

#include <bits/stdc++.h> #define F first #define S second #define vec vector #define pp pop_back #define mp make_pair #define pb push_back #define out return 0 #define ld long double #define pii pair<ll,ll> #define ull unsigned ll #define ll long long int #define sz(x) (int)(x.size()) #define all(x) x.begin(), x.end() #define FOR(i,x,y) for(int i=x;i<=y;++i) #define FORN(i,x,y) for(int i=x;i>=y;--i) using namespace std; ll mn=1e18; ll mx=-1e18; const ll mv=1000005; const double pi=3.141592653589793238462643; ll n,m,a[mv],p[mv],r[mv],b[mv],c[mv],ans; ll find(ll x){ if(p[x]==x){ return x; } return p[x]=find(p[x]); } void add(ll x,ll y,ll e){ x=find(x); y=find(y); if(x!=y){ if(r[x]<r[y]){ swap(x,y); } p[y]=x; if(b[x]!=-1&&b[y]!=-1){ b[x]+=b[y]; b[x]%=2; } if(b[x]==-1||b[y]==-1){ b[x]=e; } if(r[x]==r[y]){ r[x]++; } } } int main(){ cin>>n>>m; for(int i=0;i<n;i++){ p[i]=i; b[i]=-1; } ans=m; for(int i=0;i<m;i++){ ll x,y; string s; cin>>x>>y>>s; x--; y--; int ch=0; if(s[0]=='o'){ ch=1; } for(int j=x;j<y;j++){ if(!c[j]){ add(j,j+1,ch); c[j]=1; } } y=find(y); if(ch){ if(!b[y]){ ans=i; break; } } if(!ch){ if(b[y]){ ans=i; break; } } } ll x; cin>>x; cout<<ans; }

Can you help? Thanks!

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru2 Russian programmist_ 2018-06-13 18:53:30 56 Мелкая правка: 'oint-set. Можете пом' -> 'oint-set. \nМожете пом'
en3 English programmist_ 2018-06-13 18:50:46 1393 Tiny change: 'joint-set.Can you he' -> 'joint-set. Can you he'
en2 English programmist_ 2018-06-13 18:49:16 1412 Tiny change: '1003).\nI know ' -> '1003).\nI got Wrong Answer.\nI know '
en1 English programmist_ 2018-06-13 18:43:15 129 Initial revision for English translation
ru1 Russian programmist_ 2018-06-13 18:40:49 150 Первая редакция (опубликовано)