Submission #2601663
Source Code Expand
#include<vector>
#include<cmath>
#include<map>
#include<cstdlib>
#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<set>
#include<stack>
#include<bitset>
#include<functional>
#include<ctime>
#include<queue>
#include<deque>
#include<complex>
#include<cassert>
using namespace std;
#define pb push_back
#define pf push_front
typedef long long lint;
typedef complex<double> P;
#define mp make_pair
#define fi first
#define se second
typedef pair<lint,lint> pint;
typedef pair<pint,int> tint;
#define All(s) s.begin(),s.end()
#define rAll(s) s.rbegin(),s.rend()
#define REP(i,a,b) for(int i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)
//問題文および制約はちゃんと確認しよう!
//サイズは10^5じゃなくて2×10^5とかかもしれないし、重要な制約・条件を見落としているかも
//とりあえずサンプルを読んでから解法を考えよう?
set<tint> s;
vector<int> ch[100100];
lint nb[58],nc[58];
lint out,y,w,d;
lint cal(set<tint>::iterator it){
return (*it).fi.fi*w+(*it).fi.se;
}
void del(lint B,lint C,int x){
set<tint>::iterator it=s.lower_bound(mp(mp(B,C),x)),itl=it,ith=it;
itl--;ith++;
lint a=cal(itl),b=cal(it),c=cal(ith);
if(b==a) out++;else if(b-a-1<=d) out-=max(0LL,b-a-1);
if(c==b) out++;else if(c-b-1<=d) out-=max(0LL,c-b-1);
if(a==c) out--;else if(c-a-1<=d) out+=max(0LL,c-a-1);
s.erase(it);
}
void ins(lint B,lint C,int x){
s.insert(mp(mp(B,C),x));
set<tint>::iterator it=s.lower_bound(mp(mp(B,C),x)),itl=it,ith=it;
itl--;ith++;
lint a=cal(itl),b=cal(it),c=cal(ith);
if(b==a) out--;else if(b-a-1<=d) out+=max(0LL,b-a-1);
if(c==b) out--;else if(c-b-1<=d) out+=max(0LL,c-b-1);
if(c==a) out++;if(c-a-1<=d) out-=max(0LL,c-a-1);
}
void outp(){
set<tint>::iterator it=s.begin();
while(it!=s.end()){
cout<<(*it).fi.fi<<','<<(*it).fi.se<<','<<(*it).se<<' ';it++;
}
cout<<endl;
}
int main()
{
lint b,c,inf=123456789012345678LL;int n,m;
cin>>y>>w;cin>>n>>m>>d;
rep(i,n){
cin>>b;b--;
nb[i]=b/w;nb[i]++;nc[i]=b%w;nc[i]++;
s.insert(mp(mp(nb[i],nc[i]),0));
}
//outp();
rep(i,m){
cin>>b>>c;
s.insert(mp(mp(b,c),1));
ch[c].pb(b);
}
s.insert(mp(mp(-1,-inf),0));s.insert(mp(mp(1001001001,inf),0));
out=m+n;
set<tint>::iterator it=s.begin();
while(it!=s.end()){
set<tint>::iterator it2=it;it2++;
lint lo=cal(it),hi=cal(it2);
if(hi==lo) out--;else if(hi-lo-1<=d) out+=max(0LL,hi-lo-1);
it++;
}
REP(i,1,w+1){
cout<<out<<endl;
rep(j,ch[i].size()){
del(ch[i][j],i,1);ins(ch[i][j],i+w,1);
}
rep(j,n){
del(nb[j],nc[j],0);nc[j]++;ins(nb[j],nc[j],0);
}
}
}
Submission Info
Submission Time |
|
Task |
E - 祝日 |
User |
sky58 |
Language |
C++14 (GCC 5.4.1) |
Score |
700 |
Code Size |
2748 Byte |
Status |
AC |
Exec Time |
3275 ms |
Memory |
14080 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 |
358 ms |
12288 KB |
01-02.txt |
AC |
290 ms |
11264 KB |
01-03.txt |
AC |
215 ms |
9600 KB |
01-04.txt |
AC |
70 ms |
4992 KB |
01-05.txt |
AC |
190 ms |
9984 KB |
01-06.txt |
AC |
169 ms |
9472 KB |
01-07.txt |
AC |
157 ms |
9208 KB |
01-08.txt |
AC |
70 ms |
4864 KB |
01-09.txt |
AC |
332 ms |
10880 KB |
01-10.txt |
AC |
55 ms |
4480 KB |
01-11.txt |
AC |
278 ms |
11520 KB |
01-12.txt |
AC |
242 ms |
10496 KB |
01-13.txt |
AC |
349 ms |
11264 KB |
01-14.txt |
AC |
98 ms |
6144 KB |
01-15.txt |
AC |
217 ms |
10240 KB |
01-16.txt |
AC |
60 ms |
2688 KB |
01-17.txt |
AC |
43 ms |
4736 KB |
01-18.txt |
AC |
191 ms |
9600 KB |
01-19.txt |
AC |
362 ms |
12288 KB |
01-20.txt |
AC |
308 ms |
11520 KB |
02-01.txt |
AC |
1647 ms |
14080 KB |
02-02.txt |
AC |
525 ms |
10240 KB |
02-03.txt |
AC |
745 ms |
11648 KB |
02-04.txt |
AC |
1164 ms |
11776 KB |
02-05.txt |
AC |
1648 ms |
12160 KB |
02-06.txt |
AC |
835 ms |
10368 KB |
02-07.txt |
AC |
159 ms |
9208 KB |
02-08.txt |
AC |
278 ms |
3712 KB |
02-09.txt |
AC |
1270 ms |
11392 KB |
02-10.txt |
AC |
104 ms |
4224 KB |
02-11.txt |
AC |
1281 ms |
12160 KB |
02-12.txt |
AC |
429 ms |
10368 KB |
02-13.txt |
AC |
537 ms |
10112 KB |
02-14.txt |
AC |
95 ms |
3712 KB |
02-15.txt |
AC |
433 ms |
10112 KB |
02-16.txt |
AC |
39 ms |
2688 KB |
02-17.txt |
AC |
71 ms |
4736 KB |
02-18.txt |
AC |
231 ms |
9600 KB |
02-19.txt |
AC |
1606 ms |
13952 KB |
02-20.txt |
AC |
155 ms |
9208 KB |
02-21.txt |
AC |
411 ms |
3328 KB |
02-22.txt |
AC |
3 ms |
2560 KB |
02-23.txt |
AC |
3275 ms |
12672 KB |
02-24.txt |
AC |
1708 ms |
10752 KB |
02-25.txt |
AC |
1000 ms |
10112 KB |
02-26.txt |
AC |
3 ms |
2560 KB |
02-27.txt |
AC |
103 ms |
2688 KB |
02-28.txt |
AC |
432 ms |
2944 KB |
02-29.txt |
AC |
183 ms |
9344 KB |
02-30.txt |
AC |
187 ms |
9344 KB |
02-31.txt |
AC |
190 ms |
9344 KB |
02-32.txt |
AC |
262 ms |
2816 KB |
sample-01.txt |
AC |
2 ms |
2560 KB |
sample-02.txt |
AC |
2 ms |
2560 KB |
sample-03.txt |
AC |
2 ms |
2560 KB |
sample-04.txt |
AC |
2 ms |
2560 KB |