제출 #411936

#제출 시각아이디문제언어결과실행 시간메모리
411936amoo_safarArranging Tickets (JOI17_arranging_tickets)C++17
65 / 100
1478 ms19452 KiB
// vaziat meshki-ghermeze ! #include <bits/stdc++.h> #define pb push_back #define F first #define S second #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " : " << x << '\n' using namespace std; typedef long long ll; typedef long double ld; typedef string str; typedef pair<ll, ll> pll; const ll Mod = 1000000007LL; const int N = 2e5 + 10; const ll Inf = 2242545357980376863LL; const ll Log = 30; vector<int> G[N], H[N]; int n, m; void Add(int u, int v){ G[u].pb(v); H[v].pb(u); } int ps[N]; int Solve(int l, int r){ memset(ps, 0, sizeof ps); multiset<int> ms; int res = 0; for(int i = l; i < r - 1; i++){ for(auto x : G[i]){ if(x >= r) continue; ps[i] ++; ps[x] --; ms.insert(x); // debug(x); } ps[i] += ps[i - 1]; while(ps[i] > 0){ int fr = *ms.rbegin(); // debug(fr); ms.erase(ms.find(fr)); ps[i] -= 2; ps[fr] += 2; res ++; // cerr << i << " : " << fr << '\n'; } } // cerr << l << " , " << r << " : " << res << '\n'; // exit(0); return res; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; int a, b, c; for(int i = 0; i < m; i++){ cin >> a >> b >> c; assert(c == 1); if(a > b) swap(a, b); Add(a, b); Add(b, n + a); Add(n + a, n + b); } int ans = m; for(int i = 1; i <= n; i++){ ans = min(ans, Solve(i, n + i)); // break; } cout << ans << '\n'; return 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...