# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
220235 | MKopchev | Examination (JOI19_examination) | C++14 | 3079 ms | 7920 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
const int nmax=1e5+42;
int n,q;
struct info
{
int first_low,second_low,sum_low,id;
};
info inp[2*nmax];
bool cmp(info a,info b)
{
if(a.sum_low!=b.sum_low)return a.sum_low>b.sum_low;
return a.id<b.id;
}
int x_vals[nmax];
int y_vals[nmax];
int output[nmax];
vector< pair<int,int> > active;
int main()
{
scanf("%i%i",&n,&q);
for(int i=1;i<=n;i++)
{
scanf("%i%i",&inp[i].first_low,&inp[i].second_low);
inp[i].sum_low=inp[i].first_low+inp[i].second_low;
x_vals[i]=inp[i].first_low;
y_vals[i]=inp[i].second_low;
inp[i].id=-1;
}
for(int i=n+1;i<=n+q;i++)
{
scanf("%i%i%i",&inp[i].first_low,&inp[i].second_low,&inp[i].sum_low);
inp[i].id=i-n;
}
sort(inp+1,inp+n+q+1,cmp);
sort(x_vals+1,x_vals+n+1);
sort(y_vals+1,y_vals+n+1);
for(int i=1;i<=n+q;i++)
{
int x_actual=lower_bound(x_vals+1,x_vals+n+1,inp[i].first_low)-x_vals;
int y_actual=lower_bound(y_vals+1,y_vals+n+1,inp[i].second_low)-y_vals;
if(inp[i].id==-1)active.push_back({x_actual,y_actual});
else
{
int ret=0;
for(auto k:active)
if(k.first>=x_actual&&k.second>=y_actual)ret++;
output[inp[i].id]=ret;
}
}
for(int i=1;i<=q;i++)
printf("%i\n",output[i]);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |