Submission #117789


Source Code Expand

#define _CRT_SECURE_NO_WARNINGS
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
#include <set>
#include <map>
#include <queue>
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cstring>
#include <cctype>
#include <list>
#include <cassert>
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define rer(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i))
#define reu(i,l,u) for(int (i)=(int)(l);(i)<(int)(u);++(i))
#if defined(_MSC_VER) || __cplusplus > 199711L
#define aut(r,v) auto r = (v)
#else
#define aut(r,v) typeof(v) r = (v)
#endif
#define each(it,o) for(aut(it, (o).begin()); it != (o).end(); ++ it)
#define all(o) (o).begin(), (o).end()
#define pb(x) push_back(x)
#define mp(x,y) make_pair((x),(y))
#define mset(m,v) memset(m,v,sizeof(m))
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3fLL
#define EPS 1e-9
using namespace std;
typedef vector<int> vi; typedef pair<int,int> pii; typedef vector<pair<int,int> > vpii;
typedef long long ll; typedef vector<long long> vl; typedef pair<long long,long long> pll; typedef vector<pair<long long,long long> > vpll;
typedef vector<string> vs; typedef long double ld;

//判定のみ
bool visit(const vector<vector<int> > &g, int v, vector<char> &color) {
	color[v] = 1;
	each(e, g[v]) {
		if(color[*e] == 2) continue;
		if(color[*e] == 1) return false;
		if(!visit(g, *e, color)) return false;
	}
	color[v] = 2;
	return true;
}
bool topologicalSort(const vector<vector<int> > &g) {
	int n = g.size();
	vector<char> color(n);
	rep(u, n) if (!color[u] && !visit(g, u, color))
		return false;
	return true;
}

int n, m;
int p[1000], l[1000], r[1000];
char c[1000];
map<int,int> coords;
vi v;
bool check(int x) {
	vector<vi> g(v.size());
	rep(i, x) {
		if(c[i] == 'w') {
			rer(j, l[i], r[i])
				g[p[i]].pb(j);
		}else {
			rer(j, l[i], r[i])
				g[j].pb(p[i]);
		}
	}
	return topologicalSort(g);
}
int main() {
	cin >> n >> m;
	rep(i, m) {
		cin >> p[i] >> c[i] >> l[i] >> r[i];
		coords[p[i]] = -1;
		coords[l[i]] = -1;
		coords[r[i]] = -1;
	}
	each(i, coords) i->second = v.size(), v.pb(i->first);
	rep(i, m) {
		p[i] = coords[p[i]];
		l[i] = coords[l[i]];
		r[i] = coords[r[i]];
	}
	int L = 0, U = m+1;
	while(U-L>0) {
		int mid = (L+U) / 2;
		if(!check(mid)) U = mid;
		else L = mid+1;
	}
	cout << (U == m+1 ? 0 : U) << endl;
	return 0;
}

Submission Info

Submission Time
Task H - さいたまの矛盾
User anta
Language C++11 (GCC 4.8.1)
Score 100
Code Size 2470 Byte
Status AC
Exec Time 392 ms
Memory 10564 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 46
Set Name Test Cases
All 00-sample, 00-sample-01, 00-sample-02, 10-corner-00, 10-hard, 10-special-01, 10-special-02, 10-special-03, 10-special-04, 50-random-00, 50-random-01, 50-random-02, 51-stack-00, 51-stack-01, 51-stack-02, 51-stack-03, 51-stack-04, 51-stack-05, 51-stack-06, 51-stack-07, 51-stack-08, 51-stack-09, 51-stack-10, 51-stack-11, 51-stack-12, 51-stack-13, 51-stack-14, 51-stack-15, 51-stack-16, 51-stack-17, 51-stack-18, 51-stack-19, 52-sector-00, 52-sector-01, 52-sector-02, 52-sector-03, 52-sector-04, 53-sequence-00, 53-sequence-01, 53-sequence-02, 53-sequence-03, 53-sequence-04, 53-sequence-05, 53-sequence-06, 53-sequence-07, 54-retmax-00
Case Name Status Exec Time Memory
00-sample AC 21 ms 928 KB
00-sample-01 AC 21 ms 804 KB
00-sample-02 AC 23 ms 772 KB
10-corner-00 AC 21 ms 792 KB
10-hard AC 392 ms 9248 KB
10-special-01 AC 21 ms 932 KB
10-special-02 AC 22 ms 932 KB
10-special-03 AC 21 ms 928 KB
10-special-04 AC 22 ms 928 KB
50-random-00 AC 22 ms 924 KB
50-random-01 AC 23 ms 1044 KB
50-random-02 AC 32 ms 1948 KB
51-stack-00 AC 85 ms 4896 KB
51-stack-01 AC 136 ms 5024 KB
51-stack-02 AC 325 ms 9356 KB
51-stack-03 AC 123 ms 4380 KB
51-stack-04 AC 305 ms 8700 KB
51-stack-05 AC 154 ms 6972 KB
51-stack-06 AC 133 ms 4892 KB
51-stack-07 AC 147 ms 4776 KB
51-stack-08 AC 292 ms 7936 KB
51-stack-09 AC 92 ms 4900 KB
51-stack-10 AC 284 ms 8408 KB
51-stack-11 AC 192 ms 7104 KB
51-stack-12 AC 256 ms 8084 KB
51-stack-13 AC 238 ms 7452 KB
51-stack-14 AC 234 ms 7460 KB
51-stack-15 AC 350 ms 10564 KB
51-stack-16 AC 266 ms 8692 KB
51-stack-17 AC 373 ms 8832 KB
51-stack-18 AC 159 ms 5164 KB
51-stack-19 AC 341 ms 8696 KB
52-sector-00 AC 28 ms 1180 KB
52-sector-01 AC 30 ms 1184 KB
52-sector-02 AC 29 ms 1128 KB
52-sector-03 AC 28 ms 1180 KB
52-sector-04 AC 28 ms 992 KB
53-sequence-00 AC 30 ms 1092 KB
53-sequence-01 AC 33 ms 1176 KB
53-sequence-02 AC 34 ms 1176 KB
53-sequence-03 AC 27 ms 1052 KB
53-sequence-04 AC 38 ms 1060 KB
53-sequence-05 AC 24 ms 924 KB
53-sequence-06 AC 32 ms 1064 KB
53-sequence-07 AC 34 ms 1196 KB
54-retmax-00 AC 27 ms 1060 KB