Submission #1155783
Source Code Expand
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <functional>
#include <cmath>
#include <complex>
#include <cctype>
#include <cassert>
#include <sstream>
#include <ctime>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(v) (v).begin(),(v).end()
template<typename A, typename B> inline bool chmax(A &a, B b) { if (a<b) { a=b; return 1; } return 0; }
template<typename A, typename B> inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; }
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<pii, int> P;
#define INF (1<<29)
#define INFL (1ll<<60)
#define EPS (1e-8)
#define PI (acos(-1))
const ll MOD = 1000000007ll;
int n;
P t[112345];
vector<int> v[1123456];
int dp[1123456];
int main() {
cin >> n;
REP(i, n) {
int a, b;
scanf("%d %d", &a, &b);
v[a].push_back(b);
t[i] = P(pii(a, i + 1), b);
}
for (int i = 1000000; i >= 0; i--) {
chmax(dp[i], dp[i + 1]);
REP(j, v[i].size()) chmax(dp[i], dp[v[i][j]] + 1);
}
sort(t, t + n);
vector<int> ans;
int now = 0;
REP(i, n) {
int l = t[i].first.first;
int r = t[i].second;
int pos = t[i].first.second;
if (l < now) continue;
if (ans.size() + 1 + dp[r] != dp[0]) continue;
P mi = P(pii(pos, r), i);
while (true) {
i++;
if (i < n) break;
r = t[i].second;
pos = t[i].first.second;
if (ans.size() + 1 + dp[r] != dp[0]) break;
chmin(mi, P(pii(pos, r), i));
}
ans.push_back(mi.first.first);
now = mi.first.second;
i = mi.second;
}
cout << ans.size() << endl;
REP(i, ans.size()) printf("%d%c", ans[i], i == ans.size() - 1 ? '\n' : ' ');
return 0;
}
Submission Info
Submission Time
2017-03-12 14:21:32+0900
Task
C - 仕事計画
User
tkmst201
Language
C++ (GCC 5.4.1)
Score
0
Code Size
1887 Byte
Status
WA
Exec Time
66 ms
Memory
36088 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:46:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d", &a, &b);
^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
0 / 100
Status
Set Name
Test Cases
Sample
sample1.txt, sample2.txt, sample3.txt
All
0.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 20.txt, 21.txt, 22.txt, 23.txt, 3.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, sample1.txt, sample2.txt, sample3.txt
Case Name
Status
Exec Time
Memory
0.txt
AC
14 ms
28160 KB
1.txt
AC
14 ms
28160 KB
10.txt
WA
14 ms
28160 KB
11.txt
AC
15 ms
32256 KB
12.txt
AC
14 ms
28160 KB
13.txt
WA
14 ms
28160 KB
14.txt
WA
16 ms
32256 KB
15.txt
AC
14 ms
28160 KB
16.txt
WA
14 ms
28288 KB
17.txt
WA
16 ms
32256 KB
18.txt
AC
37 ms
28800 KB
19.txt
WA
40 ms
28800 KB
2.txt
AC
15 ms
30080 KB
20.txt
WA
62 ms
35200 KB
21.txt
AC
37 ms
28800 KB
22.txt
AC
40 ms
28800 KB
23.txt
WA
66 ms
36088 KB
3.txt
AC
14 ms
28160 KB
4.txt
AC
14 ms
28160 KB
5.txt
AC
15 ms
32256 KB
6.txt
WA
14 ms
28160 KB
7.txt
AC
14 ms
28160 KB
8.txt
WA
15 ms
32256 KB
9.txt
WA
14 ms
28160 KB
sample1.txt
AC
14 ms
28160 KB
sample2.txt
AC
14 ms
28160 KB
sample3.txt
AC
14 ms
28160 KB