Problem:
アルミ缶の上にあるミカン (Oranges on Cans)
square1001 君は、テーブルにアルミ缶を $N$ 缶置きました。
E869120 君は、テーブル上のそれぞれのアルミ缶の上に $M$ 個ずつミカンを乗せました。
アルミ缶の上に乗っているミカンは全部で何個ありますか？
入力
入力は以下の形式で標準入力から与えられる。
$N$ $M$
出力
アルミ缶の上に乗っているミカンの数を 1 行で出力してください。
ただし、最後には改行を入れること。
制約
$1 \leq N \leq 9$
$1 \leq M \leq 9$
入力は全て整数である。
入力例1
3 4
出力例1
12
入力例2
7 7
出力例2
49

Submitted solutions:

code_snippet: #include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;
typedef pair<int,int>P;

struct st{
	int a,b,c,d;
};
st s[200000];

int main(){
	int n,q;cin>>n>>q;
	rep(i,n){
		scanf("%d%d%d%d",&s[i].a,&s[i].b,&s[i].c,&s[i].d);
	}
	sort(s,s+n,[](st a,st b){
		return a.a>b.a;
	});
	rep(i,q){
		int x,y,z,w;scanf("%d%d%d%d",&x,&y,&z,&w);
		bool ok=false;
		rep(j,n){
			if(x>=s[j].a)break;
			if(s[j].a<y&&y<s[j].b&&z<s[j].c&&s[j].c<w&&w<s[j].d){ok=true;break;}
		}
		if(ok)puts("Yes");
		else puts("No");
	}
}
accuracy: 1
time_ms: 1360
memory_kb: 4720
final_rank: 2

code_snippet: #include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;
typedef long long ll;
typedef pair<int,int>P;

struct st{
	int a,b,c,d;
};
st s[200000];

int main(){
	int n,q;cin>>n>>q;
	rep(i,n){
		scanf("%d%d%d%d",&s[i].a,&s[i].b,&s[i].c,&s[i].d);
	}
	sort(s,s+n,[](st a,st b){
		return a.a>b.a;
	});
	rep(i,q){
		int x,y,z,w;scanf("%d%d%d%d",&x,&y,&z,&w);
		bool ok=false;
		rep(j,n){
			if(x>s[j].a)break;
			if(s[j].a<y&&y<s[j].b&&z<s[j].c&&s[j].c<w&&w<s[j].d){ok=true;break;}
		}
		if(ok)puts("Yes");
		else puts("No");
	}
}
accuracy: 0.2
time_ms: 620
memory_kb: 4652
final_rank: 3

code_snippet: #include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<unordered_map>
using namespace std;
typedef long long ll;
#define chmax(a,b) a=max(a,b)
#define chmin(a,b) a=min(a,b)
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define mod 1000000007
#define mad(a,b) a=(a+b)%mod
#define N 100010
ll n,q;
ll a[N],b[N],c[N],d[N];
ll x[N],y[N],z[N],w[N];
bool ans[N];

namespace seg{
    ll dat[2*N];
    ll ns;
    void init(ll nn){
	ns=nn;
	for(int i=0;i<2*ns;i++){
	    dat[i]=-1e17;
	}
    }
    void upd(ll i,ll x){
	i+=ns;
	dat[i]=x;
	for(;i;i>>=1){
	    dat[i/2]=max(dat[i],dat[i^1]);
	}
    }
    ll ma(ll l,ll r){
	l+=ns,r+=ns+1;
	ll res=-1e17;
	for(ll a=l,b=r;a<b;a>>=1,b>>=1){
	    if(a&1)chmax(res,dat[a++]);
	    if(b&1)chmax(res,dat[--b]);
	}
	return res;
    }
};
vector<int> idn,idq;
struct qry{
    ll place,typ,id;
    bool operator<(const qry&key)const{
	if(this->place!=key.place)return this->place<key.place;
	return this->typ<key.typ;
    }
    qry(ll p,ll t,ll id){
	this->place=p;
	this->typ=t;
	this->id=id;
    }
};
void solve(){if(idn.size()==0||idq.size()==0)return;
    vector<qry>v;
    vector<pair<ll,ll> > xx;
    for(auto i:idn){
	v.push_back(qry(a[i],2,i));
	v.push_back(qry(b[i],0,i));
	xx.push_back(mp(c[i],i));
    }
    for(auto i:idq){
	v.push_back(qry(y[i],1,i));
    }
    sort(all(v));
    sort(all(xx));
    seg::init(xx.size());
    for(qry g:v){
	if(g.typ==1){
	    ll l=lower_bound(all(xx),(pair<ll,ll>)mp(z[g.id],+1e17))-xx.begin();
	    ll r=lower_bound(all(xx),(pair<ll,ll>)mp(w[g.id],-1e17))-xx.begin();
	    ll res=seg::ma(l,r-1);
	    if(res>w[g.id]){
		ans[g.id]=1;
	    }
	}
	else{
	    ll p=lower_bound(all(xx),mp(c[g.id],g.id))-xx.begin();
	    if(g.typ==0)seg::upd(p,-1e17);
	    if(g.typ==2)seg::upd(p,d[g.id]);
	}
    }
}

int main(){
    cin.tie(0);
    ios::sync_with_stdio(0);
    ll n,q;
    cin>>n>>q;
    vector<pair<ll,ll> >ns,qs;
    for(int i=0;i<n;i++){
	cin>>a[i]>>b[i]>>c[i]>>d[i];
	ns.push_back(mp(a[i],i));
    }
    for(int i=0;i<q;i++){
	cin>>x[i]>>y[i]>>z[i]>>w[i];
	qs.push_back(mp(x[i],i));
	ans[i]=0;
    }
    sort(ns.begin(),ns.end());
    sort(qs.begin(),qs.end());
    
    for(int i=1;i<N;i++){
	ll rng=1;
	for(int j=0;j<20;j++){
	    if(i&(1<<j)){
		rng=(1<<j);
		break;
	    }
	}
	idn.clear();
	idq.clear();
	for(int j=(int)(lower_bound(all(ns),(pair<ll,ll>)mp(i,-1e17))-ns.begin());j<(int)ns.size()&&ns[j].first<i+rng;j++){
	    idn.push_back(ns[j].second);
	}
	for(int j=lower_bound(all(qs),(pair<ll,ll>)mp(i-rng,-1e17))-qs.begin();j<(int)qs.size()&&qs[j].first<i;j++){
	    idq.push_back(qs[j].second);
	}
	solve();
    }
    for(int i=0;i<q;i++){
	if(ans[i])cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
    }
}
accuracy: 1
time_ms: 490
memory_kb: 19304
final_rank: 1