이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define _ int v, int tl, int tr, int l, int r
#define tm (tl + tr >> 1)
#define sol L[v],tl,tm,l,r
#define sag R[v],tm+1,tr,l,r
#define mp make_pair
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef pair < int , int > pp;
const int mod = 1e9 + 7;
const int N = 5e5 + 5;
pp P[N];
int root[N],s[N*18],L[N*18],R[N*18],id;
int up(_){
if(tl > r || tr < l) return v;
int nw = ++id;
if(tl == tr) { s[nw] = s[v] + 1; return nw; }
L[nw] = up(sol);
R[nw] = up(sag);
s[nw] = s[v] + 1;
return nw;
}
int qry(_) {
if(tl > r || tr < l) return 0;
if(tl >= l && tr <= r) return s[v];
return qry(sol) + qry(sag);
}
bool can(int m, int T[]){
sort(T+1 , T+m+1);
int i, x, p, kalan;
p = kalan = 0;
for(i=1;i<=m;i++){
x = T[i];
p = T[i-1];
kalan = min(kalan , qry(root[p],1,N-1,x,N-1));
kalan += qry(root[x],1,N-1,x,N-1) - qry(root[p],1,N-1,x,N-1);
//cout << qry(root[x],1,n,x,n) << " " << qry(root[p],1,n,x,n) << " aa\n";
kalan -= x;
if(kalan < 0) return 0;
}
return 1;
}
void init(int n, int a[], int b[]){
int i,p;
for(i=1;i<=n;i++) P[i] = mp(a[i-1] , b[i-1]);
sort(P+1 , P+n+1);
for(i=1;i<=n;i++){
p = up(p,1,n,P[i].nd,P[i].nd);
if(P[i].st != P[i+1].st)
root[ P[i].st ] = p;
}
for(i=1;i<=n;i++)
if(!root[i])
root[i] = root[i-1];
}
/*
int main(){
freopen("input.in", "r", stdin);freopen("input.out", "w", stdout);
cin >> n;
for(i=1;i<=n;i++) cin >> A[i] >> B[i].st;
sort(A+1 , A+n+1);
for(i=1;i<=n;i++){
p = up(p,1,n,A[i].nd,A[i].nd);
if(A[i].st != A[i+1].st)
root[ A[i].st ] = p;
}
for(i=1;i<=n;i++)
if(!root[i])
root[i] = root[i-1];
for(cin >> q; q-- ;){
cin >> m;
for(i=1;i<=m;i++)
cin >> T[i];
sort(T+1 , T+m+1);
for(kalan=0,i=1;i<=m;i++){
x = T[i];
p = T[i-1];
kalan = min(kalan , qry(root[p],1,n,x,n));
kalan += qry(root[x],1,n,x,n) - qry(root[p],1,n,x,n);
//cout << qry(root[x],1,n,x,n) << " " << qry(root[p],1,n,x,n) << " aa\n";
kalan -= x;
//cout << kalan << " ss\n";
if(kalan < 0) break;
}
puts(i > m ? "1" : "0");
//return 1;
}
return 0;
}
*/
컴파일 시 표준 에러 (stderr) 메시지
teams.cpp: In function 'int up(int, int, int, int, int)':
teams.cpp:5:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define tm (tl + tr >> 1)
^
teams.cpp:6:21: note: in expansion of macro 'tm'
#define sol L[v],tl,tm,l,r
^
teams.cpp:26:13: note: in expansion of macro 'sol'
L[nw] = up(sol);
^
teams.cpp:5:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define tm (tl + tr >> 1)
^
teams.cpp:7:18: note: in expansion of macro 'tm'
#define sag R[v],tm+1,tr,l,r
^
teams.cpp:27:13: note: in expansion of macro 'sag'
R[nw] = up(sag);
^
teams.cpp: In function 'int qry(int, int, int, int, int)':
teams.cpp:5:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define tm (tl + tr >> 1)
^
teams.cpp:6:21: note: in expansion of macro 'tm'
#define sol L[v],tl,tm,l,r
^
teams.cpp:34:13: note: in expansion of macro 'sol'
return qry(sol) + qry(sag);
^
teams.cpp:5:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define tm (tl + tr >> 1)
^
teams.cpp:7:18: note: in expansion of macro 'tm'
#define sag R[v],tm+1,tr,l,r
^
teams.cpp:34:24: note: in expansion of macro 'sag'
return qry(sol) + qry(sag);
^
teams.cpp: In function 'void init(int, int*, int*)':
teams.cpp:54:11: warning: 'p' may be used uninitialized in this function [-Wmaybe-uninitialized]
int i,p;
^| # | 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... |