/*
Author: Teoman Ata Korkmaz
*/
#pragma GCC optimize("O3,fast-math,unroll-loops,no-stack-protector")
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#define int ll
#define ff first
#define ss second
#define endl '\n'
#define spc ' '
#define pb push_back
#define e2(x) (1LL<<(x))
#define lg(x) (__lg(x))
#define gcd(x,y) __gcd(x,y)
#define lcm(x,y) ((x/gcd(x,y))*y)
#define smrt(i) (double(sqrt(8*(i)+1)-1)/2)
#define ssum(x) ((x)*((x)+1)/2)
#define isint(x) (ceil((x))==floor((x)))
#define no cout<<"NO"<<endl
#define yes cout<<"YES"<<endl
#define cendl cout<<endl
#define mset(x,y) memset(x,y,sizeof(x))
#define popcnt(x) __builtin_popcountll(x)
#define clz(x) __builtin_clz(x)
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define clock() uint64_t(chrono::high_resolution_clock::now().time_since_epoch().count())
#define compress(x) sort(all(x));x.resize(unique(all(x))-x.begin())
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);cerr.tie(NULL);cout<<fixed<<setprecision(0);cerr<<fixed<<setprecision(0)
#define fileio freopen("out.txt","w",stdout);freopen("in.txt","r",stdin)
#define usacoio(s) freopen((s + str(".in")).c_str(), "r", stdin);freopen((s + str(".out")).c_str(), "w", stdout)
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
using namespace std;
//using namespace __gnu_pbds;
typedef int_fast32_t i32;
typedef int_fast64_t ll;
typedef long double ldouble;
typedef string str;
typedef pair<int,int> ii;
typedef pair<int,ii> iii;
typedef pair<ii,ii> iiii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<pair<char,int>> vci;
typedef vector<str> vstr;
typedef map<int,int> mii;
typedef map<char,int> mci;
typedef map<str,int> msi;
typedef map<int,vi> miv;
typedef unordered_map<int,int> umii;
typedef unordered_map<char,int> umci;
typedef unordered_map<str,int> umsi;
typedef unordered_map<int,vi> umiv;
typedef set<int> sti;
typedef set<char> stc;
typedef set<str> sts;
typedef multiset<int> msti;
typedef multiset<char> mstc;
typedef multiset<str> msts;
inline int segsum(int start,int end,int step){
if(end<start)return 0;
return (((end-start)/step+1)*(start+end))>>1;
}
inline int fp(int b,int p,int mod=1e9+7){
int ans=1;
while(p){
if(p&1)ans=(ans*b)%mod;
p>>=1;
b=(b*b)%mod;
}
return ans;
}
template<typename InputIterator,typename T = int>
T accumulate(InputIterator first,InputIterator last,T init = T{}) {
for (; first != last; ++first) {
init += *first;
}
return init;
}
template<typename T,typename T2>inline pair<T,T2> operator+(const pair<T,T2>&a,const pair<T,T2>& b){return {a.ff+b.ff,a.ss+b.ss};}
template<typename T,typename T2>inline pair<T,T2> operator-(const pair<T,T2>&a,const pair<T,T2>& b){return {a.ff-b.ff,a.ss-b.ss};}
template<typename T,typename T2>inline pair<T,T2> operator*(const pair<T,T2>&a,const pair<T,T2>& b){return {a.ff*b.ff,a.ss*b.ss};}
template<typename T,typename T2>inline pair<T,T2> operator/(const pair<T,T2>&a,const pair<T,T2>& b){return {a.ff/b.ff,a.ss/b.ss};}
template<typename T> inline void maxs(T& x,const T& y){return void(x=max(x,y));}
template<typename T> inline void mins(T& x,const T& y){return void(x=min(x,y));}
template<typename T> inline void gcds(T& x,const T& y){return void(x=gcd(x,y));}
template<typename T> inline void lcms(T& x,const T& y){return void(x=lcm(x,y));}
template<typename T,typename T2>inline ostream& operator<<(ostream& os, const pair<T,T2>& p){
os<<"["<<p.ff<<","<<p.ss<<"]";
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const vector<T>& a) {
for(const T& _:a)os<<_<<' ';
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const vector<vector<T>>& a) {
for(const vector<T>& _:a)os<<_<<endl;
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const set<T>& a) {
for(const T& _:a)os<<_<<' ';
return os;
}
template<typename T,typename T2>inline ostream& operator<<(ostream& os,const map<T,T2>& a) {
for(const auto& _:a)os<<_<<' ';
return os;
}
template<typename T,typename T2>inline ostream& operator<<(ostream& os,const unordered_map<T,T2>& a) {
for(const auto& _:a)os<<_<<' ';
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const queue<T>& b) {
queue<T> a=b;
while(a.size()){
os<<a.front()<<" ";
a.pop();
}
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const stack<T>& b) {
stack<T> a=b;
while(a.size()){
os<<a.top()<<" ";
a.pop();
}
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const priority_queue<T>& b) {
priority_queue<T> a=b;
while(a.size()){
os<<a.top()<<" ";
a.pop();
}
return os;
}
template<typename T>inline ostream& operator<<(ostream& os,const priority_queue<T,vector<T>,greater<T>>& b) {
priority_queue<T,vector<T>,greater<T>> a=b;
while(a.size()){
os<<a.top()<<" ";
a.pop();
}
return os;
}
template<typename T,typename T2>inline istream& operator>>(istream& is,pair<T,T2>& p){
is>>(p.ff)>>(p.ss);
return is;
}
template<typename T>inline istream& operator>>(istream& is,vector<T>& a) {
for(T& _:a)is>>_;
return is;
}
inline void print(){cout<<endl;}
template<typename... Args>
inline void print(const Args&... args){
((cout<<args<<' '),...)<<endl;
}
inline void input(){}
template<typename... Args>
inline void input(Args&... args){
(cin>>...>>args);
}
#ifdef ONLINE_JUDGE
template<typename... Args>
inline void debug(const Args&... args){
return void("59");
}
#else
inline void debug(){cerr<<endl;}
template<typename... Args>
inline void debug(const Args&... args){
((cerr<<args<<' '),...)<<endl;
}
#endif
inline void yn(bool b){
if(b)yes;
else no;
}
#define ASSERT(condition, message)\
if(condition){\
cerr<<"Assertion failed: "<<message<<" at "<<__FILE__<<":"<<to_string(__LINE__)<<endl;\
abort();\
}
///////////////////////////////////////////////////////////////////
constexpr int N=3e3+5;
constexpr int A=1e9+5;
constexpr int MOD=1e9+7;
constexpr i32 INF=INT32_MAX;
constexpr ll INFL=INT64_MAX;
constexpr int BLOCK=320;
constexpr ldouble EPS=1e-9;
constexpr int MAXQUERY=100;
constexpr int dx[4]={-1,0,1,0};
constexpr int dy[4]={0,1,0,-1};
mt19937 mt(clock());
///////////////////////////////////////////////////////////////////
int n,m,k,t,q,a,b,x,y,w,ans;
vi v;
inline void subtask1(){
vi a;
for(int i=0;i<n-1;i++){
if(v[i]==v[i+1])a.pb(i);
}
while(q--){
input(x,y);
x--;y--;
auto it=lower_bound(all(a),x);
if(it!=a.end() && *it<y)no;
else yes;
}
}
inline void subtask2(){
}
inline void subtask3(){
while(q--){
input(x,y);
x--;y--;
vi adj[k],vis(k,0);
for(int i=x;i<y;i++){
if((i-x)%2==0){
adj[v[i]].pb(v[i+1]);
}
else{
adj[v[i+1]].pb(v[i]);
}
}
auto dfs=[&adj,&vis](auto&& dfs,int node){
if(vis[node]==1)return false;
if(vis[node]==2)return true;
vis[node]++;
for(auto i:adj[node])if(!dfs(dfs,i))return false;
vis[node]++;
return true;
};
bool flag=0;
for(int i=x;i<=y;i++){
if(!dfs(dfs,v[i])){
flag=1;
break;
}
}
if(flag)no;
else yes;
}
}
inline void subtask4(){
vi ans(n,-1),vis,adj[N];
auto dfs=[&adj,&vis](auto&& dfs,int node){
if(vis[node]==1)return false;
if(vis[node]==2)return true;
vis[node]++;
for(auto i:adj[node])if(!dfs(dfs,i))return false;
vis[node]++;
return true;
};
auto f=[&](int x,int y){
vis.assign(k,0);
for(int i=0;i<k;i++)adj[i].clear();
for(int i=x;i<y;i++){
if((i-x)%2==0){
adj[v[i]].pb(v[i+1]);
}
else{
adj[v[i+1]].pb(v[i]);
}
}
bool flag=0;
for(int i=x;i<=y;i++){
if(!dfs(dfs,v[i])){
flag=1;
break;
}
}
return !flag;
};
for(int i=0;i<n;i++){
int l=i,r=n-1;
while(l<=r){
int m=(l+r)>>1;
if(f(i,m))l=m+1,ans[i]=m;
else r=m-1;
}
}
//debug("ans:",ans);
while(q--){
input(x,y);
x--;y--;
if(ans[x]<y)no;
else yes;
}
}
inline void solve(void){
input(n,k,q);
v.resize(n);
input(v);
for(auto& i:v)i--;
subtask4();
}
signed main(void){
int start=clock();
fastio;
//usacoio("59");
int _testcase=1;
//cin>>_testcase;
while(_testcase--)solve();
debug("Time elapsed:",(clock()-start)/uint64_t(1e6),"ms");
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
130 ms |
12880 KB |
Output is correct |
2 |
Correct |
129 ms |
12880 KB |
Output is correct |
3 |
Correct |
132 ms |
12880 KB |
Output is correct |
4 |
Correct |
93 ms |
7280 KB |
Output is correct |
5 |
Correct |
109 ms |
9320 KB |
Output is correct |
6 |
Correct |
133 ms |
12880 KB |
Output is correct |
7 |
Correct |
142 ms |
12756 KB |
Output is correct |
8 |
Correct |
155 ms |
12892 KB |
Output is correct |
9 |
Correct |
146 ms |
12904 KB |
Output is correct |
10 |
Correct |
203 ms |
13428 KB |
Output is correct |
11 |
Correct |
361 ms |
13908 KB |
Output is correct |
12 |
Correct |
307 ms |
13140 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
123 ms |
11088 KB |
Output is correct |
2 |
Correct |
123 ms |
11096 KB |
Output is correct |
3 |
Correct |
109 ms |
11168 KB |
Output is correct |
4 |
Correct |
96 ms |
8272 KB |
Output is correct |
5 |
Correct |
115 ms |
9468 KB |
Output is correct |
6 |
Correct |
112 ms |
11188 KB |
Output is correct |
7 |
Correct |
126 ms |
11052 KB |
Output is correct |
8 |
Correct |
124 ms |
11092 KB |
Output is correct |
9 |
Correct |
121 ms |
11348 KB |
Output is correct |
10 |
Correct |
116 ms |
12112 KB |
Output is correct |
11 |
Correct |
121 ms |
12112 KB |
Output is correct |
12 |
Correct |
0 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
177 ms |
672 KB |
Output is correct |
3 |
Correct |
190 ms |
600 KB |
Output is correct |
4 |
Correct |
10 ms |
600 KB |
Output is correct |
5 |
Correct |
1 ms |
344 KB |
Output is correct |
6 |
Correct |
1 ms |
348 KB |
Output is correct |
7 |
Correct |
129 ms |
656 KB |
Output is correct |
8 |
Correct |
276 ms |
600 KB |
Output is correct |
9 |
Correct |
342 ms |
604 KB |
Output is correct |
10 |
Correct |
451 ms |
732 KB |
Output is correct |
11 |
Correct |
477 ms |
680 KB |
Output is correct |
12 |
Correct |
407 ms |
668 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
130 ms |
12880 KB |
Output is correct |
2 |
Correct |
129 ms |
12880 KB |
Output is correct |
3 |
Correct |
132 ms |
12880 KB |
Output is correct |
4 |
Correct |
93 ms |
7280 KB |
Output is correct |
5 |
Correct |
109 ms |
9320 KB |
Output is correct |
6 |
Correct |
133 ms |
12880 KB |
Output is correct |
7 |
Correct |
142 ms |
12756 KB |
Output is correct |
8 |
Correct |
155 ms |
12892 KB |
Output is correct |
9 |
Correct |
146 ms |
12904 KB |
Output is correct |
10 |
Correct |
203 ms |
13428 KB |
Output is correct |
11 |
Correct |
361 ms |
13908 KB |
Output is correct |
12 |
Correct |
307 ms |
13140 KB |
Output is correct |
13 |
Correct |
123 ms |
11088 KB |
Output is correct |
14 |
Correct |
123 ms |
11096 KB |
Output is correct |
15 |
Correct |
109 ms |
11168 KB |
Output is correct |
16 |
Correct |
96 ms |
8272 KB |
Output is correct |
17 |
Correct |
115 ms |
9468 KB |
Output is correct |
18 |
Correct |
112 ms |
11188 KB |
Output is correct |
19 |
Correct |
126 ms |
11052 KB |
Output is correct |
20 |
Correct |
124 ms |
11092 KB |
Output is correct |
21 |
Correct |
121 ms |
11348 KB |
Output is correct |
22 |
Correct |
116 ms |
12112 KB |
Output is correct |
23 |
Correct |
121 ms |
12112 KB |
Output is correct |
24 |
Correct |
0 ms |
344 KB |
Output is correct |
25 |
Correct |
0 ms |
348 KB |
Output is correct |
26 |
Correct |
177 ms |
672 KB |
Output is correct |
27 |
Correct |
190 ms |
600 KB |
Output is correct |
28 |
Correct |
10 ms |
600 KB |
Output is correct |
29 |
Correct |
1 ms |
344 KB |
Output is correct |
30 |
Correct |
1 ms |
348 KB |
Output is correct |
31 |
Correct |
129 ms |
656 KB |
Output is correct |
32 |
Correct |
276 ms |
600 KB |
Output is correct |
33 |
Correct |
342 ms |
604 KB |
Output is correct |
34 |
Correct |
451 ms |
732 KB |
Output is correct |
35 |
Correct |
477 ms |
680 KB |
Output is correct |
36 |
Correct |
407 ms |
668 KB |
Output is correct |
37 |
Correct |
352 ms |
13656 KB |
Output is correct |
38 |
Correct |
286 ms |
13468 KB |
Output is correct |
39 |
Correct |
162 ms |
12956 KB |
Output is correct |
40 |
Correct |
93 ms |
8272 KB |
Output is correct |
41 |
Correct |
124 ms |
9772 KB |
Output is correct |
42 |
Correct |
308 ms |
13392 KB |
Output is correct |
43 |
Correct |
425 ms |
13648 KB |
Output is correct |
44 |
Correct |
263 ms |
13400 KB |
Output is correct |
45 |
Correct |
581 ms |
14004 KB |
Output is correct |
46 |
Correct |
615 ms |
13996 KB |
Output is correct |
47 |
Correct |
599 ms |
14000 KB |
Output is correct |