818C.soft thief
Yet another round on DecoForces is coming! Grandpa Maks wanted to participate in it but someone has stolen his precious sofa! And how can one perform well with such a major loss?
Fortunately, the thief had left a note for Grandpa Maks. This note got Maks to the sofa storehouse. Still he had no idea which sofa belongs to him as they all looked the same!
The storehouse is represented as matrix n × m. Every sofa takes two neighbouring by some side cells. No cell is covered by more than one sofa. There can be empty cells.
Sofa A is standing to the left of sofa B if there exist two such cells a and b that xa < xb, a is covered by A and b is covered by B. Sofa A is standing to the top of sofa B if there exist two such cells a and b that ya < yb, a is covered by A and b is covered by B. Right and bottom conditions are declared the same way.
Note that in all conditions A ≠ B. Also some sofa A can be both to the top of another sofa B and to the bottom of it. The same is for left and right conditions.
The note also stated that there are cntl sofas to the left of Grandpa Maks's sofa, cntr — to the right, cntt — to the top and cntb — to the bottom.
Grandpa Maks asks you to help him to identify his sofa. It is guaranteed that there is no more than one sofa of given conditions.
Output the number of Grandpa Maks's sofa. If there is no such sofa that all the conditions are met for it then output -1.
Input
The first line contains one integer number d (1 ≤ d ≤ 105) — the number of sofas in the storehouse.
The second line contains two integer numbers n, m (1 ≤ n, m ≤ 105) — the size of the storehouse.
Next d lines contains four integer numbers x1, y1, x2, y2 (1 ≤ x1, x2 ≤ n, 1 ≤ y1, y2 ≤ m) — coordinates of the i-th sofa. It is guaranteed that cells (x1, y1) and (x2, y2) have common side, (x1, y1) ≠ (x2, y2) and no cell is covered by more than one sofa.
The last line contains four integer numbers cntl, cntr, cntt, cntb (0 ≤ cntl, cntr, cntt, cntb ≤ d - 1).
Output
Print the number of the sofa for which all the conditions are met. Sofas are numbered 1 through d as given in input. If there is no such sofa then print -1.
Examples
input
2
3 2
3 1 3 2
1 2 2 2
1 0 0 1
output
1
input
3
10 10
1 2 1 1
5 5 6 5
6 4 5 4
2 1 2 0
output
2
input
2
2 2
2 1 1 1
1 2 2 2
1 0 0 0
output
-1
Note
Let's consider the second example.
The first sofa has 0 to its left, 2 sofas to its right ((1, 1) is to the left of both (5, 5) and (5, 4)), 0 to its top and 2 to its bottom (both 2nd and 3rd sofas are below).
The second sofa has cntl = 2, cntr = 1, cntt = 2 and cntb = 0.
The third sofa has cntl = 2, cntr = 1, cntt = 1 and cntb = 1.
So the second one corresponds to the given conditions.
In the third example
The first sofa has cntl = 1, cntr = 1, cntt = 0 and cntb = 1.
The second sofa has cntl = 1, cntr = 1, cntt = 1 and cntb = 0.
And there is no sofa with the set (1, 0, 0, 0) so the answer is -1.
题意,沙发店里找一个符合上面,下面,左面,右面有几个沙发的沙发,注意,如果两个沙发坐标是(1,1)(2,1)和(1,4)(2,4),那么他们两个的左面和右面各有一个沙发
解法,四个方向分别排序,然后暴力跑每一个沙发,排序方向上坐标符合第几个沙发的就加一,然后最后找找有没有加到4的沙发就可以了,但是有一个要特判,就是如果,符合的太多了,在排序之后还有符合的,且他的排序方向上的两个坐标是不一样的,那么就不存在,比如(1,1)(2,1)和(1,4)(2,4),要你找上面一个,下面0个左边一个,右边0 个的,明显,这时候的右边,都是1个,要输出-1
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#define sf scanf
#define scf(x) scanf("%d",&x)
#define scff(x,y) scanf("%d%d",&x,&y)
#define scfff(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define vi vector<int>
#define mp make_pair
#define pf printf
#define prf(x) printf("%d\n",x)
#define mm(x,b) memset((x),(b),sizeof(x))
#define rep(i,a,n) for (ll i=a;i<n;i++)
#define per(i,a,n) for (ll i=a;i>=n;i--)
typedef long long ll;
using namespace std;
const ll mod=1e9+7;
const double eps=1e-6;
const double pi=acos(-1.0);
const int inf=0x7fffffff;
const int N=1e5+7;
struct node
{
int id;
int x1,y1,x2,y2;
}a[N];
void predeal(node &x)
{
if(x.x1==x.x2)
{
if(x.y1>x.y2)
swap(x.y1,x.y2);
}
if(x.y1==x.y2)
{
if(x.x1>x.x2)
swap(x.x1,x.x2);
}
}
bool cmp1(node x,node y)
{
if(x.x2!=y.x2)
return x.x2 <y.x2;
return x.x1 <y.x1;
}
bool cmp2(node x,node y)
{
if(x.x1 !=y.x1)
return x.x1 >y.x1;
return x.x2 >y.x2;
}
bool cmp3(node x,node y)
{
if(x.y2!=y.y2)
return x.y2 <y.y2 ;
return x.y1 <y.y1 ;
}
bool cmp4(node x,node y)
{
if(x.y1 !=y.y1 )
return x.y1 >y.y1;
return x.y2 >y.y2;
}
int num[N];
int main()
{
mm(num,0);
int q;scf(q);
int n,m;scff(n,m);
rep(i,1,1+q)
{
a[i].id=i;
scff(a[i].x1,a[i].y1);
scff(a[i].x2,a[i].y2);
predeal(a[i]);
}
int u,d,l,r;
cin>>l>>r>>d>>u;
sort(a+1,a+q+1,cmp1);
rep(i,1,q+1)
{
if(a[l+1].x1==a[i].x1&&a[l+1].x2==a[i].x2)
{
num[a[i].id]++;
if(i>l+1&&a[i].x1 !=a[i].x2)//在排序方向要不是同一个高度,这样才会加一,如果是同一个高度那么就符合
{
cout<<"-1";return 0;
}
}
}
sort(a+1,a+1+q,cmp2);
rep(i,1,q+1)
{
if(a[r+1].x1==a[i].x1&&a[r+1].x2==a[i].x2)
{
num[a[i].id]++;
if(i>r+1&&a[i].x2!=a[i].x1)
{
cout<<"-1";return 0;
}
}
}
sort(a+1,a+1+q,cmp3);
rep(i ,1,q+1)
{
if(a[d+1].y1==a[i].y1&&a[d+1].y2==a[i].y2)
{
num[a[i].id]++;
if(i>d+1&&a[i].y1!=a[i].y2)
{
cout<<"-1";return 0;
}
}
}
sort(a+1,a+1+q,cmp4);
rep(i,1,q+1)
{
if(a[u+1].y1==a[i].y1&&a[u+1].y2==a[i].y2)
{
num[a[i].id]++;
if(i>u+1&&a[i].y1 !=a[i].y2)
{
cout<<"-1";return 0;
}
}
}
int ans=-1;
rep(i,1,q+1)
if(num[i]==4) ans=i;
prf(ans);
return 0;
}
818C.soft thief的更多相关文章
- Codeforces 817+818(A~C)
(点击题目即可查看原题) 817A Treasure Hunt 题意:给出起点和终点,每次移动只能从 (a,b)移动至(a+x,b+y) , (a+x,b-y) , (a-x,b+y) , (a-x, ...
- 数据库设计中的Soft Delete模式
最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文 ...
- linux內核輸出soft lockup
創建的內核線程長期佔用cpu,一直內核認為線程soft lockup,如無法獲取自旋鎖等:因此線程可適度調用schdule(),以進行進程的調度:因為kwatchdog的執行級別低,一直得不到執行 [ ...
- codeforces 632+ E. Thief in a Shop
E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard ...
- Codeforces632E Thief in a Shop(NTT + 快速幂)
题目 Source http://codeforces.com/contest/632/problem/E Description A thief made his way to a shop. As ...
- 撤销git reset soft head操作
一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快 ...
- git reset soft,hard,mixed之区别深解
GIT reset命令,似乎让人很迷惑,以至于误解,误用.但是事实上不应该如此难以理解,只要你理解到这个命令究竟在干什么. 首先我们来看几个术语 HEAD 这是当前分支版本顶端的别名,也就是在当前分支 ...
- SVM3 Soft Margin SVM
之前分为两部分讨论过SVM.第一部分讨论了线性SVM,并且针对线性不可分的数据,把原始的问题转化为对偶的SVM求解.http://www.cnblogs.com/futurehau/p/6143178 ...
- 强(strong)、软(soft)、弱(weak)、虚(phantom)引用
https://github.com/Androooid/treasure/blob/master/source/lightsky/posts/mat_usage.md 1.1 GC Root JAV ...
随机推荐
- Tableau 之一 连接数据源
导入数据源 与各类数据源建立连接关系,是使用tableau探索分析数据的第一步,本节内容包括: 数据源类型 连接数据源 数据源类型 打开tableau,可以在左侧窗口看到连接选项,目前tableau可 ...
- 共有49款Windows GUI开发框架开源软件 【转】
源文 : http://www.oschina.net/project/tag/178/gui?lang=36&os=0&sort=view&p=1 桌面应用开发引擎 Allo ...
- uni-app版本在线更新问题(下载完成安装时一闪而过,安卓8以上版本)
我使用的是uni-app插件市场https://ext.dcloud.net.cn/plugin?id=142 出现一闪而过时加入权限 <uses-permission android:name ...
- 提高github代码下载速度的小技巧
1.打开如下路径: C:\Windows\System32\drivers\etc 2.将此处的HOSTS文件复制到其他地方,比如桌面.(此处大概率是没有编辑权限的) 3.用记事本打开HOSTS文件, ...
- P2419 [USACO08JAN]牛大赛Cow Contest(dfs走天下/)
题目描述 FJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:).在赛场上,奶牛们按1..N依次编号.每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平不相上下,也就 ...
- Nginx+IIS+asp.net mvc 实现负载均衡示例
一.Nginx官网 http://nginx.org/ 二.下载并安装Nginx 下载地址:http://nginx.org/en/download.html 启动Nginx,启动成功的话可以在任务管 ...
- 末学者笔记--shell编程上 1 玄
Shell 编程 [内容简列]: 1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令 5.1 grep 5.2 cut 5.3 s ...
- 合并多个对象并且去重的2种写法(es6)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- C# Winform无边框窗口拖动
Windows 的 API 代码如下: [DllImport("user32.dll")] public static extern bool ReleaseCapture(); ...
- Linq to Object原理
using System; using System.Collections.Generic; using System.Linq; using System.Threading; namespace ...