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
AC × 4
AC × 22
AC × 56
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