QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#582492 | #9221. Missing Boundaries | Displace_# | WA | 1ms | 5948kb | C++14 | 2.2kb | 2024-09-22 16:38:54 | 2024-09-22 16:38:54 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define se second
#define fi first
#define MAXN 1000010
const int mo=1e9+7;
using namespace std;
ll a[MAXN],b[MAXN];
ll t,n,cnt,min_occ,L;
set<int> s;
set<int>::iterator it;
vector<pii> seg;
vector<int> lb, rb;
vector<pii> vec;
void solve(){
scanf("%lld",&n);
scanf("%lld",&L);
cnt=0;min_occ=0;
s.clear();seg.clear();lb.clear();rb.clear();vec.clear();
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
scanf("%lld",&b[i]);
int l=a[i],r=b[i];
if(l==-1&&r==-1){
++cnt;
min_occ++;
}
else if(l==-1){
if(s.find(b[i]) != s.end()){
printf("NIE\n");
return;
}
s.insert(b[i]);
min_occ++;
rb.emplace_back(r);
}
else if(r==-1){
if(s.find(a[i]) != s.end()){
printf("NIE\n");
return;
}
s.insert(a[i]);
min_occ++;
lb.emplace_back(l);
}
else{
seg.emplace_back(l, r);
min_occ += b[i]-a[i]+1;
if(s.find(a[i]) != s.end()){
printf("NIE\n");
return;
}
s.insert(a[i]);
if(s.find(b[i]) != s.end()){
printf("NIE\n");
return;
}
s.insert(b[i]);
}
}
if(min_occ > L){
printf("NIE\n");
return;
}
sort(seg.begin(), seg.end());
for(int i=0; i<(int)seg.size()-1; ++i){
if(seg[i].se>=seg[i+1].fi){
printf("NIE\n");
return;
}
}
for(int i=0;i<lb.size();i++){
it = s.upper_bound(lb[i]);
int u;
if(it == s.end()){
u = L;
}
else u = (*it)-1;
s.insert(u);
seg.emplace_back(lb[i],u);
}
for(int i=0;i<rb.size();i++){
it = s.find(rb[i]);
int u;
if(it == s.begin()){
u=1;
}
else{
it--;
u = (*it)+1;
}
s.insert(u);
seg.emplace_back(u,rb[i]);
}
sort(seg.begin(), seg.end());
/*for(int i=0;i<(int)seg.size();i++){
printf("seg[%d]=%d,%d\n",i,seg[i].fi,seg[i].se);
}
for(int i=0; i<(int)seg.size()-1; ++i){
if(seg[i].se>=seg[i+1].fi){
printf("error\n");
}
}*/
int curl=1,vcnt=0;
for(int i=0; i<(int)seg.size(); ++i){
if(curl<seg[i].fi)vcnt++;
curl=seg[i].se+1;
}
if(curl<=L)vcnt++;
if(vcnt > cnt){
printf("NIE\n");
}
else printf("TAK\n");
}
int main(){
cin >> t;
for(int i=1;i<=t;i++){
solve();
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5892kb
input:
3 4 51 1 -1 11 50 -1 -1 -1 10 3 2 -1 -1 -1 -1 -1 -1 2 3 1 2 2 3
output:
TAK NIE NIE
result:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 5948kb
input:
1 200000 1000000000 490669427 -1 224278942 224287156 821104480 -1 861696576 861702036 807438935 807440055 574078002 574083717 465630141 -1 195378188 -1 -1 13500961 -1 977536179 92893115 -1 -1 661145418 -1 215804863 -1 685338515 544348999 -1 465532902 -1 130346949 -1 -1 526666304 635604584 635605404 ...
output:
NIE
result:
wrong answer 1st lines differ - expected: 'TAK', found: 'NIE'