結果
問題 | No.629 グラフの中に眠る門松列 |
ユーザー |
![]() |
提出日時 | 2018-09-27 23:22:17 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3,724 ms / 4,000 ms |
コード長 | 1,687 bytes |
コンパイル時間 | 1,056 ms |
コンパイル使用メモリ | 106,292 KB |
実行使用メモリ | 11,692 KB |
最終ジャッジ日時 | 2024-10-12 04:38:50 |
合計ジャッジ時間 | 12,770 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 36 |
ソースコード
#include <stdio.h> #include <algorithm> #include <iostream> #include <string> #include <vector> #include <functional> #include <map> #include <iomanip> #include <math.h> #include <stack> #include <queue> #include <bitset> #include <cstdlib> #include <tuple> #include <cctype> #include <ctype.h> #include <set> using namespace std; int main() { int i, j, k; long n, m; vector<long>a(2005, -1); vector<pair<long, long>>v(17000, make_pair(999999, 999999)); vector<vector<long>>flag(1005, vector<long>(1005, false)); vector<long>flag2(11111, false); cin >> n >> m; for (i = 1; i <= n; i++) { cin >> a[i]; } for (i = 0; i < m*2; i++) { long u1, u2; cin >> u1 >> u2; v[i].first = u1; v[i].second = u2; i++; v[i].first = u2; v[i].second = u1; } sort(v.begin(), v.end()); for (i = 0; i < m * 2; i++) { long num1, num2, num3; num1 = a[v[i].first]; flag2[v[i].first] = true; for (j = 0; j < m * 2; j++) { if (v[i].second == v[j].first && flag2[v[i].second] == false) { num2 = a[v[j].first]; flag2[v[j].first] = true; for (k = 0; k < m * 2; k++) { if (v[j].second == v[k].first && flag2[v[j].second]==false) { num3 = a[v[k].first]; //flag2[v[k].first] = true; //cout << "num1->" << num1 << "num2->" << num2 << "num3->" << num3 << endl; if (((num1<num3) && (num3<num2)) || ((num3>num1)&&(num1>num2)) || ((num3<num1)&&(num1<num2)) || ((num1>num3)&&(num3>num2))) { cout << "YES" << endl; getchar(); getchar(); return 0; } } } flag2[v[j].first] = false; } } flag2[v[i].first] = false; } cout << "NO" << endl; getchar(); getchar(); return 0; }