Submission #2600955
Source Code Expand
#include <algorithm> #include <cassert> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <ctime> #include <deque> #include <functional> #include <iomanip> #include <iostream> #include <list> #include <map> #include <queue> #include <random> #include <set> #include <sstream> #include <string> #include <utility> #include <vector> const int DEBUG = 0; #define REP(i,s,n) for(int i=(int)(s);i<(int)(n);i++) #define DEBUGP(val) cerr << #val << "=" << val << "\n" using namespace std; typedef long long int ll; typedef vector<int> VI; typedef vector<ll> VL; typedef pair<int, int> PI; map<ll, int> tbl; ll intv = 0; ll sz = 0; ll d; void add(ll day) { if (tbl.count(day) != 0 && tbl[day] > 0) { tbl[day]++; return; } auto miit = tbl.upper_bound(day - 1); auto mait = tbl.lower_bound(day + 1); ll mi = -1e18; ll ma = 1e18; if (miit != tbl.begin()) { miit--; mi = miit->first; } if (mait != tbl.end()) { ma = mait->first; } tbl[day] = 1; sz++; assert (mi < day); assert (ma > day); if (DEBUG) { DEBUGP(day); DEBUGP(mi); DEBUGP(ma); } if (ma - mi - 1 <= d) { intv--; return; } if (day - mi - 1 <= d) intv += day - mi - 1; if (ma - day - 1 <= d) intv += ma - day - 1; } void erase(ll day) { assert (tbl.count(day) > 0); if (tbl[day] >= 2) { tbl[day]--; return; } auto miit = tbl.upper_bound(day - 1); auto mait = tbl.lower_bound(day + 1); ll mi = -1e18; ll ma = 1e18; if (miit != tbl.begin()) { miit--; mi = miit->first; } if (mait != tbl.end() && mait->first > day) { ma = mait->first; } tbl[day] = 0; tbl.erase(day); sz--; assert (mi < day); assert (ma > day); if (DEBUG) { DEBUGP(-day); DEBUGP(mi); DEBUGP(ma); } if (ma - mi - 1 <= d) { intv++; return; } if (day - mi - 1 <= d) intv -= day - mi - 1; if (ma - day - 1 <= d) intv -= ma - day - 1; } void debug(void) { if (DEBUG) { cerr << "data:" << endl; DEBUGP(sz); DEBUGP(intv); for (auto e: tbl) { if (e.second > 0) { cerr << e.first << " " << e.second << endl; } } } } int main(void) { ios::sync_with_stdio(false); cin.tie(0); ll y, w, n, m; cin >> y >> w >> n >> m >> d; VL a(n); REP(i, 0, n) { cin >> a[i]; a[i]--; } VL b(m), c(m); vector<VL> sigma(w); REP(i, 0, m) { cin >> b[i] >> c[i]; b[i]--; c[i]--; sigma[c[i]].push_back(b[i]); } // insert all REP(i, 0, n) add(a[i]); REP(i, 0, m) { ll day = b[i] * w + c[i]; add(day); } REP(i, 0, w) { if (DEBUG) DEBUGP(i); debug(); cout << sz + intv << endl; // TODO a REP(j, 0, n) { erase(a[j] + i); add(a[j] + i + 1); } for (ll b: sigma[i]) { erase(b * w + i); add(b * w + i + w); } } }
Submission Info
Submission Time | |
---|---|
Task | E - 祝日 |
User | kobae964 |
Language | C++14 (GCC 5.4.1) |
Score | 700 |
Code Size | 2850 Byte |
Status | AC |
Exec Time | 3554 ms |
Memory | 15744 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | 100 / 100 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt |
Subtask1 | 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, sample-01.txt, sample-02.txt |
All | 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, 02-25.txt, 02-26.txt, 02-27.txt, 02-28.txt, 02-29.txt, 02-30.txt, 02-31.txt, 02-32.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 409 ms | 13952 KB |
01-02.txt | AC | 328 ms | 12160 KB |
01-03.txt | AC | 192 ms | 9600 KB |
01-04.txt | AC | 62 ms | 3456 KB |
01-05.txt | AC | 235 ms | 9728 KB |
01-06.txt | AC | 219 ms | 9088 KB |
01-07.txt | AC | 210 ms | 8904 KB |
01-08.txt | AC | 64 ms | 3456 KB |
01-09.txt | AC | 334 ms | 11776 KB |
01-10.txt | AC | 49 ms | 2816 KB |
01-11.txt | AC | 260 ms | 12160 KB |
01-12.txt | AC | 231 ms | 11136 KB |
01-13.txt | AC | 323 ms | 12672 KB |
01-14.txt | AC | 93 ms | 5120 KB |
01-15.txt | AC | 265 ms | 10368 KB |
01-16.txt | AC | 56 ms | 1152 KB |
01-17.txt | AC | 48 ms | 2944 KB |
01-18.txt | AC | 234 ms | 9088 KB |
01-19.txt | AC | 387 ms | 13952 KB |
01-20.txt | AC | 351 ms | 12544 KB |
02-01.txt | AC | 2462 ms | 13952 KB |
02-02.txt | AC | 839 ms | 10368 KB |
02-03.txt | AC | 1093 ms | 12800 KB |
02-04.txt | AC | 1687 ms | 13184 KB |
02-05.txt | AC | 2228 ms | 15744 KB |
02-06.txt | AC | 1274 ms | 11136 KB |
02-07.txt | AC | 210 ms | 8924 KB |
02-08.txt | AC | 289 ms | 1792 KB |
02-09.txt | AC | 2470 ms | 12800 KB |
02-10.txt | AC | 156 ms | 2432 KB |
02-11.txt | AC | 2427 ms | 13184 KB |
02-12.txt | AC | 662 ms | 10624 KB |
02-13.txt | AC | 986 ms | 10240 KB |
02-14.txt | AC | 178 ms | 1792 KB |
02-15.txt | AC | 639 ms | 10112 KB |
02-16.txt | AC | 56 ms | 384 KB |
02-17.txt | AC | 77 ms | 2944 KB |
02-18.txt | AC | 299 ms | 9088 KB |
02-19.txt | AC | 2382 ms | 13952 KB |
02-20.txt | AC | 206 ms | 8820 KB |
02-21.txt | AC | 580 ms | 2304 KB |
02-22.txt | AC | 2 ms | 256 KB |
02-23.txt | AC | 3554 ms | 14336 KB |
02-24.txt | AC | 1933 ms | 11136 KB |
02-25.txt | AC | 1637 ms | 12544 KB |
02-26.txt | AC | 3 ms | 256 KB |
02-27.txt | AC | 140 ms | 640 KB |
02-28.txt | AC | 658 ms | 1664 KB |
02-29.txt | AC | 198 ms | 8832 KB |
02-30.txt | AC | 203 ms | 8960 KB |
02-31.txt | AC | 202 ms | 8960 KB |
02-32.txt | AC | 339 ms | 1280 KB |
sample-01.txt | AC | 1 ms | 256 KB |
sample-02.txt | AC | 1 ms | 256 KB |
sample-03.txt | AC | 1 ms | 256 KB |
sample-04.txt | AC | 1 ms | 256 KB |