#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int _n=(n), i=0;i<_n;++i)
#define FOR(i,a,b) for(int i=(a),_b=(b);i<=_b;++i)
#define FORD(i,a,b) for(int i=(a),_b=(b);i>=_b;--i)
#define TRACE(x) cerr << "TRACE(" #x ")" << endl;
#define DEBUG(x) cerr << #x << " = " << (x) << endl;
typedef long long LL; typedef unsigned long long ULL;
struct Color {
int cnt[3] = {};
void operator+=(const Color &other) {
REP(i,3) cnt[i] += other.cnt[i];
}
bool is_green() const {
return cnt[0] > 0 && cnt[1] > 0 && cnt[2] == 0;
}
};
class Cans {
public:
void read();
int count_green() const;
private:
int num_cans = 0;
vector<Color> deltas;
};
void Cans::read() {
int num_ops;
cin >> num_cans >> num_ops;
deltas.resize(num_cans+1);
REP(i, num_ops) {
int a, b, k;
cin >> a >> b >> k;
--a; --k;
deltas[a].cnt[k] += 1;
deltas[b].cnt[k] -= 1;
}
}
int Cans::count_green() const {
Color color;
int res = 0;
REP(i, num_cans) {
color += deltas[i];
if (color.is_green()) res++;
}
return res;
}
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
Cans cans;
cans.read();
int res = cans.count_green();
cout << res << "\n";
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int _n=(n), i=0;i<_n;++i) #define FOR(i,a,b) for(int i=(a),_b=(b);i<=_b;++i) #define FORD(i,a,b) for(int i=(a),_b=(b);i>=_b;--i) #define TRACE(x) cerr << "TRACE(" #x ")" << endl; #define DEBUG(x) cerr << #x << " = " << (x) << endl; typedef long long LL; typedef unsigned long long ULL; struct Color { int cnt[3] = {}; void operator+=(const Color &other) { REP(i,3) cnt[i] += other.cnt[i]; } bool is_green() const { return cnt[0] > 0 && cnt[1] > 0 && cnt[2] == 0; } }; class Cans { public: void read(); int count_green() const; private: int num_cans = 0; vector<Color> deltas; }; void Cans::read() { int num_ops; cin >> num_cans >> num_ops; deltas.resize(num_cans+1); REP(i, num_ops) { int a, b, k; cin >> a >> b >> k; --a; --k; deltas[a].cnt[k] += 1; deltas[b].cnt[k] -= 1; } } int Cans::count_green() const { Color color; int res = 0; REP(i, num_cans) { color += deltas[i]; if (color.is_green()) res++; } return res; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); Cans cans; cans.read(); int res = cans.count_green(); cout << res << "\n"; } |
English