Created
November 17, 2018 10:07
-
-
Save tabvn/b09827734374618b2787810c7e456cf3 to your computer and use it in GitHub Desktop.
codeforces Disturbed People
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
using namespace std; | |
struct Flat | |
{ | |
int isLightOn; | |
int index; | |
Flat *left; | |
Flat *right; | |
Flat(int _index, int isOn){ | |
this->isLightOn = isOn; | |
this->index = _index; | |
} | |
void addRight(Flat *flat){ | |
this->right = flat; | |
flat->left = this; | |
} | |
}; | |
vector<Flat*> flats; | |
vector<Flat*> disturbedFlats; | |
void addFlat(Flat *flat){ | |
if(flats.size() > 0){ | |
flats[(int) flats.size() -1]->addRight(flat); | |
} | |
flats.push_back(flat); | |
} | |
void clearFlats(){ | |
for (int i = 0; i < flats.size(); ++i){ | |
delete flats[i]; | |
} | |
flats.clear(); | |
disturbedFlats.clear(); | |
} | |
int findDisturbedFlats(){ | |
for (int i = 1; i < flats.size() -1; ++i){ | |
// minh di ngu roi, kiem tra 2 ong hang xom xem sao | |
if(!flats[i]->isLightOn && flats[i-1]->isLightOn && flats[i+1]->isLightOn){ | |
// phien qua | |
disturbedFlats.push_back(flats[i]); | |
} | |
} | |
int i = 0; | |
int total =0; | |
while(i < disturbedFlats.size()){ | |
if(disturbedFlats[i]->right->index == disturbedFlats[i+1]->left->index){ | |
total++; | |
i+= 2; | |
if(i == disturbedFlats.size() - 1){ | |
total++; | |
break; | |
} | |
continue; | |
}else{ | |
total++; | |
i++; | |
if(i == disturbedFlats.size() -1){ | |
total++; | |
break; | |
} | |
} | |
} | |
//cout << disturbedFlats.size() << " nb:" << sameNeigbors<< endl; | |
return total; | |
} | |
int main(){ | |
int n,a; | |
cin >> n; | |
for (int i = 0; i < n; ++i){ | |
cin >> a; | |
Flat *flat = new Flat(i,a); | |
addFlat(flat); | |
} | |
cout << findDisturbedFlats(); | |
// xoa bo nho | |
clearFlats(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment