Codechef Wormholes:我的逻辑有什么问题?
Codechef Wormholes: What's wrong with my logic?
我一直在努力解决这个问题problem from Codechef。但是我的逻辑有问题,我无法纠正,而且我等不及社论出现,因为比赛要进行很多天(比如 200 天)。
我的代码:
#include <bits/stdc++.h>
using namespace std;
struct exam {int s,e;};
int main() {
int n,x,y;
scanf("%d%d%d",&n,&x,&y);
exam ar[n];
int v[x],w[y];
for (int i = 0; i < n; ++i) scanf("%d%d",&ar[i].s,&ar[i].e);
for (int i = 0; i < x; ++i) scanf("%d",&v[i]);
for (int i = 0; i < y; ++i) scanf("%d",&w[i]);
stable_sort(v,v+x); stable_sort(w,w+y);
int mini = 1e6;
for (int i = 0; i < n; ++i) {
int *t1 = lower_bound(v,v+x,ar[i].s);
if (*t1 > ar[i].s && t1 > v) --t1;
if (*t1 > ar[i].s && t1 == v) continue;
int *t2 = lower_bound(w,w+y,ar[i].e);
if (t2 == w+y) continue;
mini = min(mini,(*t2-*t1)+1);
}
printf("%d",mini);
return 0;
}
遗憾的是这段代码没有通过两个测试用例:
谁能告诉我我的逻辑有什么问题吗?
改变
`if (*t1 > ar[i].s && t1 > v) --t1;
if (*t1 > ar[i].s && t1 == v) continue;`
到
if (*t1 != ar[i].s) {
if (t1 == v)
continue;
else
--t1;
}
我一直在努力解决这个问题problem from Codechef。但是我的逻辑有问题,我无法纠正,而且我等不及社论出现,因为比赛要进行很多天(比如 200 天)。
我的代码:
#include <bits/stdc++.h>
using namespace std;
struct exam {int s,e;};
int main() {
int n,x,y;
scanf("%d%d%d",&n,&x,&y);
exam ar[n];
int v[x],w[y];
for (int i = 0; i < n; ++i) scanf("%d%d",&ar[i].s,&ar[i].e);
for (int i = 0; i < x; ++i) scanf("%d",&v[i]);
for (int i = 0; i < y; ++i) scanf("%d",&w[i]);
stable_sort(v,v+x); stable_sort(w,w+y);
int mini = 1e6;
for (int i = 0; i < n; ++i) {
int *t1 = lower_bound(v,v+x,ar[i].s);
if (*t1 > ar[i].s && t1 > v) --t1;
if (*t1 > ar[i].s && t1 == v) continue;
int *t2 = lower_bound(w,w+y,ar[i].e);
if (t2 == w+y) continue;
mini = min(mini,(*t2-*t1)+1);
}
printf("%d",mini);
return 0;
}
遗憾的是这段代码没有通过两个测试用例:
谁能告诉我我的逻辑有什么问题吗?
改变
`if (*t1 > ar[i].s && t1 > v) --t1;
if (*t1 > ar[i].s && t1 == v) continue;`
到
if (*t1 != ar[i].s) {
if (t1 == v)
continue;
else
--t1;
}